c++++ 自定异常类可提供自定义异常信息,简化调试。具体步骤包括:创建自定异常类,派生自 std::exception。在构造函数中初始化异常信息。实现 what 方法返回异常信息。该机制允许创建特定于应用程序的信息丰富的异常,有助于精确定位错误,如示例中处理文件打开失败时的 fileopenerror 异常。
C++ 自定异常类:自定义处理异常信息的艺术
引言
在 C++ 中,异常是一种处理错误的强大机制。它允许程序优雅地从异常情景中恢复,而无需终止程序。然而,缺省的 C++ 异常类提供的信息有限,这可能会让调试变得困难。
立即学习“C++免费学习笔记(深入)”;
自定异常类
自定异常类让我们可以创建具有特定于应用程序的信息的自定义异常。这提供了更详细和有意义的错误消息,简化了调试过程。
创建自定异常类
要创建一个自定异常类,请执行以下步骤:
- 创建一个派生自 std::exception 的类。
- 在构造函数中初始化异常信息。
- 提供一个 what 方法来返回异常信息。
实战案例
假设我们正在开发一个用于处理文件的程序。我们希望能够处理文件打开失败的情况。为此,我们可以创建一个名为 FileOpenError 的自定异常类:
#include <stdexcept>
#include <string>
class FileOpenError : public std::exception {
public:
FileOpenError(const std::string& filename)
: filename_(filename) {}
const char* what() const noexcept override {
return ("Error opening file " + filename_).c_str();
}
private:
std::string filename_;
};
使用自定异常类
现在我们可以使用 FileOpenError 异常来处理文件打开失败的情况。例如:
std::string filename = "my_file.txt";
try {
// 尝试打开文件...
// 如果打开失败,抛出 FileOpenError 异常
}
catch (const FileOpenError& e) {
std::cerr << "Error: " << e.what() << std::endl;
return -1;
}
当文件打开失败时,它将打印以下错误消息:
Error: Error opening file my_file.txt
该消息清晰地表明文件打开失败,并指定了失败的文件名。这比缺省的 C++ 异常消息更具信息性,从而更容易调试。