问答详情
源自:1-1 Java异常简介

为什么发现了异常不解决它,而要抛出呢?

为什么发现了异常不解决它,而要抛出呢?

难道是特定的应用场景必须要用异常处理么?求高手解答!

提问者:木刻雪原 2016-07-19 19:47

个回答

  • 慕粉3669850
    2016-07-19 19:56:21
    已采纳

    抛异常是迟早要给某个类处理的。举个例子你就懂了。

    假如说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得到了异常,每个都当时处理一下的好?


    当时就处理异常理论上也是可以的,而且大多数时候,到底在哪处理异常,是要根据需求和项目的具体情况的。