对异常的一些体会、认识

来源:互联网 发布:php 删除文件 编辑:程序博客网 时间:2024/05/16 01:38
异常,是什么?这个问题困扰我很久了。最近,用过几次异常,对异常也有了点认识、体会。这些都是我个人体会,不知道对不对,希望能探讨下,指点下,谢过。
        书上经常说的一点是,C++相对于C而言,多了异常处理机制。那么,异常究竟是什么?我觉得,异常就是在处理的时候发生了错误,然后通过异常告知上层调用函数。而相对于C而言,只有错误处理:当碰上错误的时候,会设置一个错误码,而每一个错误码对应特定的意思。比如说errno.h中有个全局变量errno;再比如说,许多C代码中,会自定义许多错误码,然后在特定的情况下设置特定的错误码。

        也就是说,异常处理,说白了就是错误处理。只不过,C++/Java把它封装成一个类抛了出来,而C的话则是记录成一个错误码。相对而言,异常更明了,更方便;而错误码需要先定义,然后还有进行映射,然后才能知道是什么错误。另外,异常处理可能更加全面一点,如果碰上未知的错误,那么可以用"..."来捕获;而C的话,未知错误就无可奈何了。

//--------------------------------------------------------------------------------------------------------------------------------------

 这里又有了一些新 的认识,追加在后面。

用过几次错误码(异常没怎么用过),发现这些东西最难控制的就是:用哪一层的错误码?一个函数调用会有多层,比如说5层(这个还是很正常的),第5层的时候发生了错误,返回一个错误码;那么低4层的时候获取到这个错误之后,是用第5层返回的错误码?还是处理第5层的错误码之后,自己定义一个错误码返回?就是说:什么时候直接返回被调用函数的错误码,什么时候是处理被调用函数的错误码?这一点是很难区分、定义的。

而异常,我感觉和错误码类似:catch之后是处理和还是直接将这个异常抛出?这个也是个难点。

关于这个难点,感觉似乎跟架构设计有关:设计架构的层次,那个层次用哪些错误码或者异常。(不知道是不是这样子的)