8、不要使用特殊返回值去表示方法中发生的异常
1)、直接抛出异常更快,因为使用特殊的返回值表示异常时,我们每次调用完方法时,都需要去检查返回结果,并且这至少要多占用一个寄存器。降低代码运行速度。
2)、特殊返回值能,并且很可能被忽略
3)、特殊返回值不能包含堆栈跟踪信息,不能返回异常的详细信息
4)、很多时候,不存在一个特殊值去表示方法中发生的异常,比如,除数为零的情况
9、不要将“抛出异常”作为函数执行结果的一种
这是一个非常糟糕的设计。代码中包含太多的try/catch块会使代码难以理解,恰当的设计完全可以满足一个方法返回各种不同的执行结果,如果你确实需要通过抛出异常来表示方法的执行结果,那只能说明你这个方法做了太多事情,必须进行拆分
10、可以使用“抛出异常”的方式去着重说明不能被忽略的错误
例如我为我的一个产品开发了一个用来登录的API(Login),如果用户登录失败,或者用户并没有调用Login方法,那么他们调用其他方法时都会失败。我在设计Login方法的时候这样做的:如果用户登录失败,它会抛出一个异常,而并不是简单的返回false。正因为这样,调用者(用户)才不会忽略(他还没登录)这个事实。
ps: .Net异常处理的四要素
1.一个表示异常详细信息的类。
2.一个像调用者引发异常类实例的成员。
3.调用者的一段调用异常成员的的模块。
4.调用者的一段处理或捕获将要发生异常的代码块。








