C++异常处理

异常处理是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++异常处理是一个非常重要且实用的语言特性。