
为什么要抛出异常?
小弟我刚学java,跟着尚学堂练。学到异常处理。有个问题,为什么要抛出异常呢?发现异常的时候直接处理掉就可以了啊,为什么要抛出去呢?是不是如果有1个方法是可能出异常的,如...
小弟我刚学java,跟着尚学堂练。学到异常处理。有个问题,为什么要抛出异常呢?发现异常的时候直接处理掉就可以了啊,为什么要抛出去呢?
是不是如果有1个方法是可能出异常的,如果有多个地方要调用这个方法的时候,就可以往外抛啊,不用次次都写try catch 啊?最后留给最终调用这个方法的代码去处理这个异常。是不是这样啊?突然想到的。。。。。 展开
是不是如果有1个方法是可能出异常的,如果有多个地方要调用这个方法的时候,就可以往外抛啊,不用次次都写try catch 啊?最后留给最终调用这个方法的代码去处理这个异常。是不是这样啊?突然想到的。。。。。 展开
3个回答
展开全部
抛异常是迟早要给某个类处理的。举个例子你就懂了。
假如说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 虚拟机来处理。
假如说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得到了异常,每个都当时处理一下的好?
当时就处理异常理论上也是可以的,而且大多数时候,到底在哪处理异常,是要根据需求和项目的具体情况的。
展开全部
抛出异常实际是作为另一种返回值来使用的。 这样做的好处一是可以不干扰正常的返回值,另一个是调用者必须处理异常,而不像以前c语言返回一个整数型的错误码,调用者往往将它忽略了。
追问
能举个例子吗?还有,我上面的想法对嘛?
追答
比如这个,从数组a取一个值。如果不用异常机制,就需要另外的参数来返回那个错误。我写的是C++, 不过java应该差不多。
const int MAX = 10;
int a[MAX];
int getData( unsigned int index )
{
if ( index >= MAX )
throw Exception( "out of range" );
return a[ idnex ];
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
抛出异常,是当你的系统输入、输出或其他的问题时,可以捕捉到这个异常。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询