黑马程序员技术交流社区
标题:
在try中可以抛异常吗?什么时候会用到这种情况
[打印本页]
作者:
一直很安静
时间:
2013-11-26 10:48
标题:
在try中可以抛异常吗?什么时候会用到这种情况
看到一个问题问在try中可以抛出异常吗?自己试了下,是可以的,但是好像只能放在try语句的最后一行,不知道是不是这样的,还有在catch中抛异常可能是处理不了或者想反馈给调用者信息,那么在try中抛异常的作用是什么?Java允许这样做应该有他的原因吧?
自己实验的代码如下:
public class test3 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
int[] arr=new int[3];
arr[0]=1;
System.out.println(arr[0]);
throw new RuntimeException("ss");
}
catch(Exception e){
e.printStackTrace();
}
}
}
作者:
王雷1
时间:
2013-11-26 11:07
如果该异常处理不了,但是并不属于该功能出现的异常,可以将异常转换后,在抛出和该功能相关的异常或者异常可以处理,当需要将异常产生的和本功能相关的问题提供出去,当调用者知道,并处理,也可以将捕获异常处理后转换新的异常
作者:
忄雾飞扬
时间:
2013-11-26 11:07
哥们,估计是BUG吧,我也想知道,请大牛解答!!
作者:
邓伟
时间:
2013-11-26 11:24
有些异常是可以修复的。但你又不知道如何修复,只好抛给调用你这个方法的人来修复了。如
你:
public void a(int a){
int val = 10 /a; //这里a = 0时会出异常,你可以捕获,但你又不知道调用你这个方法的人的意图,只好把异常抛给他
}
所以你保证那个方法就只有你用的话,那你不用抛出异常了。
作者:
回天之力
时间:
2013-11-26 11:27
可以啊 ,就像你写的代码,直接 throw new RuntimeException("ss");那么当代码运行到这里,绝对会把异常抛给jvm,而jvm直接停止运行。所以这一行必须在最后,因为在它后面的语句也执行不到。另外catch中捕获的是别的异常,可以这么理解,try中抛出多个异常,而他只是捕捉其中的一些异常,另外的一些就被你抛出去了。所以是没有问题的。
作者:
帅气的冬瓜
时间:
2013-11-26 11:41
当捕获的异常,本功能处理不了时,可以继续在catch中抛出。
try
{
throw new AException();
}
catch (AException e)
{
throw new BException();
}
如果该异常处理不了时,但并属于该功能出现的异常,可以将异常转换后,再抛出和该功能相关的异常。
作者:
容嬷嬷当年也是
时间:
2013-11-26 13:18
在try中可以抛出异常 、
Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws,finally。
throw和throws都是抛出异常的,但塔门有区别:
throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。
throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要跑出的异常;如果要捕捉throw抛出的异常,则必须使用try—catch语句。可见,throw可以主动抛出异常,也就是可以在try中抛出异常。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2