首先我觉得:“异常”和“未对程序中所有分支流程进行处理” 是有区别的,例如:
除数为0的异常,这种情况是应该在程序中考虑的一种情况,而不应该作为异常处理。当然还有空指针引用异常等等,这些异常都应该属于“未对程序中所有分支流程进行处理” 的范畴。
而“异常”我理解的是:你已经对你程序中你所能做到、所能控制的流程都已经处理了,但还有一些漏洞,比如数据库连接,可能程序出现错误是因为物理连接断了,这时可以使用try catch finally。不知道这样理解对不对?还有自定义异常,我理解的是:知道会发生什么特殊状况,然后根据这个特殊状况定义异常,并在catch中进行处理。 我不明白的是:既然知道会发生什么状况,为什么不在程序中作为一个分支进行处理呢?自定义异常到底有什么用呢?最后请各位高手总结一下什么时候才使用异常!谢谢!!~~~
除数为0的异常,这种情况是应该在程序中考虑的一种情况,而不应该作为异常处理。当然还有空指针引用异常等等,这些异常都应该属于“未对程序中所有分支流程进行处理” 的范畴。
而“异常”我理解的是:你已经对你程序中你所能做到、所能控制的流程都已经处理了,但还有一些漏洞,比如数据库连接,可能程序出现错误是因为物理连接断了,这时可以使用try catch finally。不知道这样理解对不对?还有自定义异常,我理解的是:知道会发生什么特殊状况,然后根据这个特殊状况定义异常,并在catch中进行处理。 我不明白的是:既然知道会发生什么状况,为什么不在程序中作为一个分支进行处理呢?自定义异常到底有什么用呢?最后请各位高手总结一下什么时候才使用异常!谢谢!!~~~
被除数为0的情况:我们假设这个数是个变量int a;
它属于你所理解的“未对程序中所有分支流程进行处理”的范畴。。因为这是你所知道的。。
可是你知道这个数a什么时候为0吗?难道你每次用到这个数都来判断这个数是否为0吗?
当然你想这样做也可以。。但是没这个必要。。因为我们根本就不需要这种情况发生。。
因此在这里使用catch捕捉一下异常,显得更加方便。。
另外,异常的捕捉在调试过程中也很重要。。你捕捉到你可能考虑不到的异常。。然后进行处理。
-------------------------------------------------------------------------------------
min_jie(止戈)已经说得很清楚了,我再补充一下,抛出异常可以使应用程序正常终止,而用分支进行处理,则是非正常终止;还有就是异常可以用个参数来得到异常的信息,而分支进行处理是无法办到的。
还是直接放在try catch中?
“但是没这个必要。。因为我们根本就不需要这种情况发生。。”
是不是可以理解为:在程序中我们只考虑需要发生的情况,而其他的所有不需要发生的情况的均放在异常处理中?
1.IO OPERATION
2.NET OPERTIOAN
3.TYPE CAST