设计 – 指导您的异常处理策略的原则是什么?

在处理异常时涉及很多相对性。除了低级别的API,其中异常覆盖从硬件和操作系统提出的错误,有一个阴影区域,程序员决定什么构成异常,什么是正常条件。

您如何决定何时使用例外?您有关于例外的一致政策吗?

异常不应该用作在对象内部的方法之间传递信息的方法,在本地应该使用错误代码和防御性编程。

异常被设计为将控制从检测到错误的点传递到可以处理错误的位置(更高的堆栈),可能是因为本地代码没有足够的上下文来纠正该问题,将有更多的上下文,从而能够更好地组织恢复。

当考虑异常(至少在C),你应该考虑你的API的异常保证。最低保证水平应该是基本保证,尽管你应该努力(在适当的情况下)提供有力的保证。如果你不使用来自关系API的外部依赖,你甚至可以尝试提供无抛出保证。

N.B.不要将异常保证与异常规范混淆。

异常保证:

无保证:

There is no guarantee about the state of the object after an exception escapes a method
In these situations the object should no longer be used.

基本保证:

In nearly all situations this should be the minimum guarantee a method provides.
This guarantees the object’s state is well defined and can still be consistently used.

强保证:(aka交易保证)

This guarantees that the method will completely successfully
Or an Exception will be thrown and the objects state will not change.

无投票保证:

The method guarantees that no exceptions are allowed to propagate out of the method.
All destructors should make this guarantee.
| N.B. If an exception escapes a destructor while an exception is already propagating
| the application will terminate

http://stackoverflow.com/questions/106586/what-are-the-principles-guiding-your-exception-handling-policy

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:设计 – 指导您的异常处理策略的原则是什么?