关于异常的问题!!
class M{public static void main(String[] args){
try{
int x=5,y=0,z=x/y;
System.out.println(z);
}catch(ArithmeticException e){
System.out.println("hello");
}
finally{System.out.println("finally");}
}
}
我想问的这个应该会产生异常,为什么还是能正确输出!!
----------------解决方案--------------------------------------------------------
你输出什么???
不是hello和finally吗???
----------------解决方案--------------------------------------------------------
除数为0就产生了异常,不过你的异常处理程序会输出hello,然后再输出finally
----------------解决方案--------------------------------------------------------
出了异常,但是你捕获了异常,并在捕获的地方有输出,那当然会输出了,还有, fianlly方法是一定会执行的
除非你调用了System.exit()或者电脑断电了
----------------解决方案--------------------------------------------------------
但是如果代码这样的话
class M{
public static void main(String[] args){
int x=5,y=0,z=x/y;
try{
System.out.println(z);
}catch(ArithmeticException e){
System.out.println("hello");
}
finally{System.out.println("finally");}
}
}
catch和finally里面的语句却一个也不执行,想知道原因?
----------------解决方案--------------------------------------------------------
还有就是既然如果捕获异常之后catch语句能执行,哪么用finally语句还有什么意义,它的任务不是能放在catch语句里面执行不就可以了?
呵呵,越想越不理解了!请教了
----------------解决方案--------------------------------------------------------
那是因为你的z=x/y没有放在try里面,所以就没有捕获这个异常,系统自己提示你出现异常了。
finally是用来解决后续工作的,比如关闭文件,数据库的连接等,这个是不管有没有异常都要执行的
----------------解决方案--------------------------------------------------------
TRY CATCH是捕获异常的
而你没有把出现异常的 z=x/y放在TRY CATCH里面,JAVA虚拟机会帮你中止程序,后面的不会输出了
----------------解决方案--------------------------------------------------------