当前位置: 代码迷 >> Java相关 >> 关于异常的问题!!
  详细解决方案

关于异常的问题!!

热度:191   发布时间:2007-09-17 11:03:49.0
关于异常的问题!!
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");}


}
}
我想问的这个应该会产生异常,为什么还是能正确输出!!
搜索更多相关的解决方案: public  hello  

----------------解决方案--------------------------------------------------------

你输出什么???
不是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虚拟机会帮你中止程序,后面的不会输出了


----------------解决方案--------------------------------------------------------
  相关解决方案