异常处理是C++非常重要的一个特性,它提供了一种非局部跳转的机制,可以处理运行时出现的错误和异常情况。本文将主要介绍C++异常处理的基本方法。
一、throw抛出异常
C++使用throw关键字来抛出异常:
throw exception; // exception可以是类型或对象
例如抛出整数类型的异常:
throw 10;
二、try-catch捕获处理
通过try-catch块来捕获并处理异常:
try {
// 可能抛出异常的代码
} catch(ExceptionType e) {
// 处理异常的代码
cerr << e.what() << endl;
}
可以捕获不同类型的异常并分别处理:
try {
// ...
} catch(FileException e) {
// 处理文件异常
} catch(MemoryException e) {
// 处理内存异常
}
三、标准异常类
C++标准库定义了一些常见的异常类,比如std::exception等。我们可以继承这些异常类来定制自己的异常类。
四、重新抛出异常
可以使用throw关键字再次抛出捕获到的异常:
try {
// ...
} catch(ExceptionType e) {
// 处理相关逻辑
throw e; // 再次抛出
}
五、自定义异常
可以自定义异常类继承std::exception,并提供构造函数、what()方法等:
class MyException: public exception {
public:
MyException(string msg) : msg(msg) {}
const char* what() { return msg.c_str(); }
private:
string msg;
};
使用异常处理可以将错误情况模块化,使代码更健壮可靠。C++异常处理是一个非常重要且实用的语言特性。