以下是一個簡單的C++標準異常類的示例代碼:
#include <iostream>
#include <exception>
// 自定義異常類
class MyException : public std::exception {
public:
// 構造函數
MyException(const char* message) : msg_(message) {}
// 重寫what()函數,返回異常信息
const char* what() const noexcept override {
return msg_;
}
private:
std::string msg_;
};
int main() {
try {
// 拋出自定義異常
throw MyException("This is a custom exception.");
} catch (const MyException& e) {
// 捕獲并處理自定義異常
std::cerr << "Caught exception: " << e.what() << std::endl;
} catch (const std::exception& e) {
// 捕獲并處理標準異常
std::cerr << "Caught standard exception: " << e.what() << std::endl;
} catch (...) {
// 捕獲并處理其他未知異常
std::cerr << "Caught an unknown exception." << std::endl;
}
return 0;
}
在這個示例中,我們定義了一個名為MyException
的自定義異常類,它繼承自std::exception
。我們重寫了what()
函數,以便在捕獲異常時返回自定義的錯誤消息。
在main()
函數中,我們使用try
塊來調用可能拋出異常的代碼。在這個例子中,我們拋出了一個MyException
異常。然后,我們使用catch
塊來捕獲并處理這個異常。我們分別為自定義異常和標準異常提供了catch
塊,并為其他未知異常提供了一個通用的catch
塊。