C#有关异常处理机制的几个问题,想请教求解
为了防止运行时可能出现的异常
为了程序的完整性,异常处理顾名思义是异常,是为了防范于未然。一般出现异常是告知开发者而非直接跟用户相关
首先要搞清楚是throw还是throw XXXXException也就是所谓的封装异常。一些底层的异常一旦被包装,在上层再次引发异常的时候,可能无法直接定位到真实发生异常的地方。故仅使用throw将异常上抛到UI层或最上层
一般你在不确定是否会发生异常的时候需要进行异常捕捉,尤其是对于IO操作时、数值转换、空引用等情况
自定义异常是为了更好的封装的异常,但一般不建议自定义异常,用系统的异常即可
A.给你补充点,如果你是担心异常捕捉会影响性能,如你的第四个问题,‘完美运行的程序’,既然完美,我所理解的是100%不会出异常,那么这个时候你加try-catch跟不加try-catch,性能上来说,几乎无异,只在有异常发生时他们才会凸显出性能上的差异;
B.我个人建议,在必要的地方需要加上异常,在catch里面尽量少逻辑运算而可改用"通知"的方式来进行异常处理。在try块,尽可能将可能引发异常的情况用if等判断语句做下处理,如:
var tempArg = GetOneObj();//tempArg有可能为null,那么如果再进行tempArg.OtherMethod()的调用就会报NullReferenceException的异常,所以可以在调用钱先对tempArg进行判空操作。
C.多写代码,自然而然会理解,建议安装resharper,会对你学习或多或少有一点帮助