为什么发现了异常不解决它,而要抛出呢?
为什么发现了异常不解决它,而要抛出呢?
难道是特定的应用场景必须要用异常处理么?求高手解答!
为什么发现了异常不解决它,而要抛出呢?
难道是特定的应用场景必须要用异常处理么?求高手解答!
2016-07-19
抛异常是迟早要给某个类处理的。举个例子你就懂了。
假如说A方法掉调用-->B方法调用-->C方法。
然后在B和C方法里定义了throws Exception. A方法里定义了Try Catch。
那么调用A方法时,在执行到C方法里出现了异常,那么这个异常就会从C抛到B,再从B抛到A.
在A里的try catch就会捕获这个异常,然后你就可以在catch写自己的处理代码。
如果A里也是throws Exception,那么会一直向外抛异常,最后抛给Object,也就是java 虚拟机来处理。
为什么当时出现了异常不去处理呢?
1.你业务逻辑调用的是A方法,你执行了A方法,当然要在A里得到异常,然后来处理。如果在C里面就处理异常,这就破坏程序结构了。
2.A调用了C方法,假如还接着也调用了D,E,F方法,假如他们都有可能抛出异常,你说是在A里面获得处理一次好,还是在C,D,E,F得到了异常,每个都当时处理一下的好?
当时就处理异常理论上也是可以的,而且大多数时候,到底在哪处理异常,是要根据需求和项目的具体情况的。
举报