黑马程序员技术交流社区
标题:
关于try,catch,中多个catch的问题
[打印本页]
作者:
﹏゛心被伱牵
时间:
2012-10-22 10:01
标题:
关于try,catch,中多个catch的问题
如果有3个catch,第一个catch为扑捉Exception,第二三个为Exception的子类,请问当发生异常的时候,第二三个catch还执行吗,还是都被第一个catch执行好了?
作者:
王健宇
时间:
2012-10-22 10:41
二三异常都不会被处理。在java中所有捕获范围小的异常必须放在捕获范围大的异常之前,否则程序在编译的时候就会出现错误提示。
public class ExceptionDemo {
public static void main(String args[]){
int i=0;
int j=0;
try {
String str1=args[0];
String str2=args[1];
i=Integer.parseInt(str1);
j=Integer.parseInt(str2);
int temp=i/j;
} catch (Exception e) {
// TODO: handle exception
System.out.print("其他异常");
}catch(ArithmeticException e){
System.out.print("其他异常");
}
}
}
作者:
怪盗急得
时间:
2012-10-22 11:00
本帖最后由 陈德基 于 2012-10-22 11:02 编辑
过程是这样的:假设发生异常,首先你抓取的是Exception异常,然后你再抓取一次,抓取的是具体的子类异常。
catch(Exception e)//多态:Exception e = new NoSuchElementExcepion();
{}
catch(NoSuchElementException e) NoSuchElementExcepion e = new NoSuchElementExcepion();
{}
从上面的多态特性,就可以发现无论你抓取的是什么具体的子类异常,都会首先被Exception异常接收,这样后面的具体子类的异常处理步骤就不会被执行了。
父类的异常抓取要放在异常抓取的最后面,父类异常会直接代替子类异常被处理。
作者:
唐进
时间:
2012-10-22 11:09
下面的只要是上面catch的子类就不会不执行
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2