首选的错误处理方法
Preferred method of error handling method
我有一个基于文件的哈希表,它可能会遇到各种文件系统或用户错误。最初,我创建了所有的数据函数,如
bool add(int key, int value)
bool get(int key, int &value)
等等,其中输入/输出将通过参数传递,成功/失败将作为函数结果出现。
然后我有一些mmf包装器类,我需要在同一个项目中进行傻瓜验证,我意识到它们可能在构造函数中失败,在这种情况下返回bool不是一个真正的选项,所以我添加了一堆
if (!somethingthatindicatesfail) throw std::exception("description here");
。
所以现在我有一些在返回bool值的东西里面抛出异常的东西,然后有系统错误代码,我也需要包括在错误日志中。
乱糟糟的…我将重写所有失败场景逻辑,但在此之前,您首选的错误处理/传递方法是什么?
我想象的最终结果是一个模块,不会崩溃,但记录错误,防止进一步损坏数据,并建议用户关闭它。
正如您已经指出的,您不能使用构造函数的返回代码。所以,如果你想要一个适用于所有代码的方法,你唯一真正的选择就是异常处理。
但是,请注意,在某些情况下,最好直接中止。特别是,异常将尝试展开堆栈,但如果情况足够糟糕,可能会导致进一步的损害,终止(存在但不展开堆栈)是更好的选择。对于这种情况,设置(例如)一个单独的看门狗来记录问题并在程序崩溃时重新启动程序是有意义的。作为一个独立的进程,即使程序本身被阻塞到它唯一合理的选择是中止的地步,它也可以合理地继续执行。
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- Visual C++: MSVC vs. GCC+CLANG: 处理 lambda 捕获类成员变量,正确的方法是什么?
- 有没有更好的方法来处理异常? try-catch块真的很丑
- 处理编译器关于可能丢失数据的警告的最优雅方法是什么
- 处理影响跨不同线程共享对象的定时回调的最佳方法是什么?
- 在自定义 std::vector-like 容器中处理指针和非指针模板类型的最佳方法是什么?
- 是否有可以处理方法调用依赖关系的设计模式?
- 将不同类型的多种参数发送到处理方法的最佳方法.C
- C 最常见的并行处理方法.pthreads
- 不同处理方法的设计模式,这些方法共享一些常见的处理链
- C++良好的错误处理方法
- C/CPP 宏或预处理器,用于处理方法的多个版本
- 为什么这个简单的批处理方法不能按预期工作?
- 首选的错误处理方法
- erase删除迭代器所指向的元素失败时的处理方法
- 用于处理方法结果的变分模板