黑马程序员技术交流社区
标题:
求解一个异常问题
[打印本页]
作者:
winsking
时间:
2013-9-29 18:37
标题:
求解一个异常问题
本帖最后由 winsking 于 2013-9-30 20:04 编辑
这个代码运行结果是什么? 2个catch都会运行到么?为什么?
class ExMulti
{
static void procedure()
{
try
{
int c[]={1};
c[42]=99;
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println(“数组超越界限异常:”+e);
}
}
public static void main(String args[])
{
try
{
procedure();
int a=args.length;
int b=42/a;
System.out.println(“b=”+b);
}
catch(ArithmeticException e)
{
System.out.println(“除0异常:”+e);
}
}
}
作者:
HM马强
时间:
2013-9-29 18:45
你在main方法中调用 procedure()方法,出现异常会执行:
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("数组超越界限异常:"+e);
}
执行完procedure() 方法,程序继续执行.这时候又出现异常,就会执行:
catch(ArithmeticException e)
{
System.out.println("除0异常:"+e);
}
主要就是根据你的mian方法里面的代码顺序来看.
作者:
周志龙
时间:
2013-9-29 19:07
一旦报错抛出异常就会终止的,所以最多只能运行一个
作者:
摄影勾魂
时间:
2013-9-29 19:19
是的,两个异常都可以捕获。主函数运行到 procedure()方法,在该方法中发生了数组下标越界异常,但是你用catch处理了(同时跳出try{……},如果 c[42]=99后面还有语句,就执行不到了),程序会返回主函数接着继续往下执行……运行到 int b=42/a 时,发生了除0异常,程序又转到除0的catch处理语句,处理完跳出try{……},接下来的System.out.println(“b=”+b)也就执行不到了。运行效果如下:C:\Users\lenovo\Desktop
exception.jpg
(29.2 KB, 下载次数: 15)
下载附件
2013-9-29 19:20 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2