我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:金算盘心水论坛 > 抛出异常 >

为什么要抛出异常?

归档日期:07-21       文本归类:抛出异常      文章编辑:爱尚语录

  小弟我刚学java,跟着尚学堂练。学到异常处理。有个问题,为什么要抛出异常呢?发现异常的时候直接处理掉就可以了啊,为什么要抛出去呢?是不是如果有1个方法是可能出异常的,如果有多...

  小弟我刚学java,跟着尚学堂练。学到异常处理。有个问题,为什么要抛出异常呢?发现异常的时候直接处理掉就可以了啊,为什么要抛出去呢?

  是不是如果有1个方法是可能出异常的,如果有多个地方要调用这个方法的时候,就可以往外抛啊,不用次次都写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得到了异常,每个都当时处理一下的好?

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

  展开全部抛出异常实际是作为另一种返回值来使用的。 这样做的好处一是可以不干扰正常的返回值,另一个是调用者必须处理异常,而不像以前c语言返回一个整数型的错误码,调用者往往将它忽略了。追问能举个例子吗?还有,我上面的想法对嘛?追答比如这个,从数组a取一个值。如果不用异常机制,就需要另外的参数来返回那个错误。我写的是C++, 不过java应该差不多。

本文链接:http://izytravel.com/paochuyichang/500.html