C++ exception

C++ 通过异常来传播错误. 通过异常的方式, 错误会一层一层的向上抛出. 带来的问题是: 如果捕获不及时, 函数调用栈会不断弹出, 直到捕获或程序退出为止. 这种让错误不断蔓延的方式, 很容易造成资源泄漏的问题. 如: 在代码中检查返回值进行错误处理的方法, 将面临抛异常带来的风险. 但通过RAII处理资源释放, 能解决部分问题. 通过返回值检查错误抛异常两种方式混合进行错误处理将增加不必要的复杂度. 既然C++选择了异常错误处理的方式, 写代码时也遵循C++的逻辑为好.

下面是实现异常的实例:

#include <iostream>

class an_execption: public std::exception {
    public:
        const char* what() const noexcept override {
            return "I an exception";
        }
};

int main(void) {
    try {
        throw an_execption();
    } catch(std::exception &e) {
        std::cout << e.what() << std::endl;
    }

    return 0;
}

如果觉得有帮助, 可以扫描右边的微信打赏码支持一下.

Leave a Reply

Your email address will not be published. Required fields are marked *