何时通过值或引用捕获异常:最佳实践指南
在 C 中,有两种常见的处理异常的方法:按值捕获和按引用捕获。问题是在不同的场景下哪种方法更可取。
根据 C 中异常的标准实践,正确的方法是按值抛出并按引用捕获。让我们探讨一下这个建议背后的原因:
按值抛出:
通过引用捕获:
按值捕获在继承层次结构中存在问题:
假设您有一个异常类 CustomException 和一个重写某些属性或方法的派生类 MyException。当您按值捕获异常时,如下例所示:
try { ... } catch (CustomException e) { ... }
如果抛出 MyException 对象,捕获后它将转换为 CustomException 实例,可能会导致派生属性丢失
示例:
如果 MyException 重写了 error_code 成员,则在抛出 MyException 对象时,按值捕获将导致错误代码发生意外更改。
总结:
对于大多数场景,建议的做法是按值抛出异常并通过引用捕获异常,以避免继承层次结构的潜在问题。这确保了异常数据的完整性,并允许直接访问 catch 块中的异常对象。
以上是按值或引用捕获:何时应在 C 中选择哪个?的详细内容。更多信息请关注PHP中文网其他相关文章!