日历

September 2020
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
282930  

Reply To: 异常机制

Home Forums 《冒号课堂》讨论区 异常机制 Reply To: 异常机制

#1162
hui
Keymaster

异常机制分离了(处于低层抽象的)异常发现者与(处于高层抽象的)异常处理者,从这个角度看,异常机制是对SoC原则的一种支持。error code虽然也能达成类似效果,但不像异常机制对那样对异常处理有强制性的要求,因此不如后者更能保证软件可靠性。当然,error code也有可取之处,对于局部错误的处理,它比异常机制更方便、更自然。(Stroustrup在他的著作《The C++ programming Language》中有这么一句话:Exception handling is intended for dealing with nonlocal problems)如果遵循用error code处理局部错误、用异常机制处理非局部错误的原则,那么也可以认为异常机制比error code更加鼓励SoC。

此外,exception比error code具有更好的抽象性,因为后者通常只是朴素的整数代码。从C过渡到C++的程序员常常throw一个包含错误信息的字符串,而不是一个std::exception对象,便是没有充分利用exception的抽象性。而在Java、C#等语言中,对throw的对象有严格的要求。

 请您评分1星(很差)2星(不行)3星(一般)4星(不错)5星(很棒)