在C++中,异常处理是一种处理运行时错误的方法
<iostream>
和<exception>
头文件,分别用于输入输出流和异常处理。#include <iostream>
#include <exception>
try
块:在可能出现异常的代码段周围使用try
块。将可能抛出异常的代码放在try
块内。try {
// 可能出现异常的代码
}
catch
块:在try
块之后使用一个或多个catch
块来捕获和处理异常。每个catch
块都应该处理特定类型的异常。try {
// 可能出现异常的代码
} catch (const std::exception& e) {
// 处理标准异常类型
} catch (const std::runtime_error& e) {
// 处理运行时错误
} catch (...) {
// 处理其他未知异常
}
std::exception
或其派生类,并重写what()
方法。class CustomException : public std::exception {
public:
const char* what() const noexcept override {
return "自定义异常信息";
}
};
throw
关键字抛出异常:在程序中遇到错误时,可以使用throw
关键字抛出一个异常。if (error_condition) {
throw CustomException();
}
catch
块应该放在最后,以防止捕获到派生自其他异常类型的异常。下面是一个完整的C++异常处理示例:
#include <iostream>
#include <exception>
class CustomException : public std::exception {
public:
const char* what() const noexcept override {
return "自定义异常信息";
}
};
int main() {
try {
// 可能出现异常的代码
bool error_condition = true;
if (error_condition) {
throw CustomException();
}
} catch (const std::exception& e) {
std::cerr << "捕获到标准异常: " << e.what() << std::endl;
} catch (const std::runtime_error& e) {
std::cerr << "捕获到运行时错误: " << e.what() << std::endl;
} catch (const CustomException& e) {
std::cerr << "捕获到自定义异常: " << e.what() << std::endl;
} catch (...) {
std::cerr << "捕获到未知异常" << std::endl;
}
return 0;
}
在这个示例中,我们创建了一个自定义异常类CustomException
,并在main()
函数中使用try-catch
块捕获和处理异常。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。