前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++】基础:常见错误与异常处理

【C++】基础:常见错误与异常处理

作者头像
DevFrank
发布2024-07-24 15:47:41
1020
发布2024-07-24 15:47:41
举报
文章被收录于专栏:C++开发学习交流

😏1. 知识介绍

在C++中,异常处理是一种用于捕获和处理程序运行期间产生的错误情况的机制。异常处理允许我们在程序中指定可能会引发异常的代码块,并定义相应的处理逻辑。

C++ 异常处理涉及到的类和关键字有:

std::exception:是所有标准异常类的基类。可以自定义继承自std::exception的异常类。

std::runtime_error:表示运行时错误的异常类,如逻辑错误、资源不足等。

std::logic_error:表示逻辑错误的异常类,如无效参数、空指针等。

try、catch、throw:是C++中用于处理异常的关键字。

  • try:包含可能抛出异常的代码块,用于监视异常。
  • catch:用于捕获并处理异常的代码块。
  • throw:用于抛出异常

😊2. 常见错误

1.语法错误:这些错误通常是由于缺少分号、括号不匹配、拼写错误等导致的。

代码语言:javascript
复制
int x = 5  // 缺少分号
if (x > 0)  // 缺少右括号
cout << "Hello, World!" << endl;  // 拼写错误(应为 std::cout)

2.类型错误:这些错误通常是由于变量类型不匹配或者类型转换错误导致的。

代码语言:javascript
复制
int x = "Hello";  // 类型不匹配(应为 char* 或 std::string)
double result = 10 / 3;  // 整数除法结果赋给浮点数类型(应为 10.0 / 3.0)

3.数组越界:这些错误通常是由于访问数组时超出了有效索引范围导致的。

代码语言:javascript
复制
int arr[3] = {1, 2, 3};
int x = arr[3];  // 超出数组索引范围

4.空指针错误:这些错误通常是由于访问空指针导致的。

代码语言:javascript
复制
int* ptr = nullptr;
*ptr = 10;  // 访问空指针

5.逻辑错误:这些错误通常是由于程序逻辑错误或算法错误导致的。

代码语言:javascript
复制
for (int i = 0; i < 5; i--) {
    cout << i << " ";
}  // 循环条件错误(导致无限循环)

6.内存泄漏:这些错误通常是由于未正确释放动态分配的内存导致的。

代码语言:javascript
复制
while (true) {
    int* ptr = new int[100];
}  // 未释放动态分配的内存导致内存泄漏

😆3. 异常处理

简单的异常处理示例(除数为0):

代码语言:javascript
复制
#include <iostream>
#include <stdexcept>

int divide(int a, int b) {
    if (b == 0) {
        throw std::runtime_error("Division by zero!");  // 抛出异常
    }
    return a / b;
}

int main() {
    try {
        int result = divide(10, 0);  // 在 try 块中调用可能引发异常的函数
        std::cout << "Result: " << result << std::endl;
    } catch (const std::exception& ex) {
        std::cout << "Exception caught: " << ex.what() << std::endl;  // 捕获并处理异常
    }
    
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 😏1. 知识介绍
  • 😊2. 常见错误
  • 😆3. 异常处理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档