在类中抛出异常的最佳方法是什么?

惯性无知

在类中抛出异常时,程序员的工作是确保在类中捕获此异常吗?或者假设此异常将在主文件/运行程序中捕获是最佳实践吗?我相信是后者,但我有点不确定......采用以下代码:

#include <stdexcept>
#include <iostream>

using namespace std; // supposedly trustworthy duck

class Duck
{
public:
      Duck(int quack_nominee);
private:
      int quack_strength;
};

Duck::Duck(int quack_nominee)
{
     if (quack_nominee < 0)
     {
             throw runtime_error("A quack having a negative value produces undefined behavior on reality.");
     }

     quack_strength = quack_nominee;
}

上面的代码是好的做法吗?我假设抛出的 runtime_error 将在某处被捕获。如果使用我的类的程序员没有实现 try-catch 块,.exe 文件将崩溃(至少在我的 IDE 和编译器上)。

另外,如果我应该在类本身中有一个 try-catch 块,是否有可能合法地实现它?

r3mus n0x

异常的全部意义在于终止函数的执行流程,并通知调用者无法在函数内处理的错误条件。所以不,您绝对不必捕获自己的异常,因为它违背了异常的目的。

另一个问题是您应该使用异常报告什么样的错误。这主要取决于特定用例,但最常见的情况是无效的输入参数或外部错误(例如来自 OS 或 DB 或程序外的任何内容),在不违反“最小意外原则”的情况下无法在您的函数中处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Task中捕获异常的最佳方法是什么?

在Spring Boot中处理异常的最佳方法是什么?

捕获和重新抛出异常的最佳实践是什么?

处理异常的最佳方法是什么?

准确查明异常的最佳方法是什么?

在Javascript类中声明函数的最佳方法是什么?

在类属性中引用类名称的最佳方法是什么?

组织Python类的最佳方法是什么?

类中成员的最佳顺序是什么?

从类函数中引用类定义的变量的最佳实践或正确方法是什么?

在Java中,继续进行调用直到不引发异常的最佳方法是什么?

当必须执行步骤2时,在步骤1中处理异常的最佳方法是什么?

在非阻塞的for循环迭代中收集异常的最佳方法是什么

从捕获中排除异常类型的最佳方法是什么?

在Scala中正确扩展Java异常的最佳方法是什么?

创建通用异常包装器的最佳方法是什么?

在Go中为“超类方法实现”建模的最佳方法是什么?

在PHP中创建类中的对象数组作为属性的最佳方法是什么?

在Python中的类中向函数发送参数列表的最佳方法是什么?

在Mapper或Reducer中处理异常的Hadoop最佳实践是什么?

在Akka流-Scala中引发异常的最佳实践是什么?

在日志中搜索的最佳方法是什么?

在Java中IPC的最佳方法是什么?

装饰Python类方法的最佳方法是什么?

从子类增强基类方法的最佳方法是什么

在Eclipse中重用另一个Java项目中的类的最佳方法是什么?

在类中初始化以下实例的最佳方法是什么?

在C ++中,动态分配单个类的最佳方法是什么?

为嵌套在ember组件中的输入修改类的最佳方法是什么?