首页 > 其他 > 详细

trycatch之catch对捕获异常的处理及后续代码的执行的探索

时间:2016-01-28 00:44:41      阅读:192      评论:0      收藏:0      [点我收藏+]

工作时,一直对try块中throw的异常对象,在catch中如何处理此异常,以及trycatchfinally完毕,程序是否就此停止还是继续运行很迷惑,于是参考网上的资料,自己写了些demo,去慢慢探索。

例1.

 1 public static void main(String[] args) {  
 2         int i = 7;  
 3         int j = 0;  
 4         try { 
 5             if (j == 0) 
 6                 throw new ArithmeticException();   
 7             System.out.println("打印计算结果i/j=" + i / j);  
 8         }  
 9         catch (ArithmeticException e) {   
10             System.out.println("被除数j不能等于0");
11         }  
12         System.out.println("运行结束");  
13 } 

run:
  被除数j不能等于0
  运行结束

结论:可以看到,当try块中创建 ArithmeticException异常对象,并由throw语句将异常抛给Java运行时系统,由系统寻找匹配的异常处理器catch并运行相应异常处理代码,打印 "被除数j不能等于0",然后trycatch块结束,程序继续运行,打印"运行结束".可以看到,throw 异常对象,程序并未结束,而是继续执行。另外,我们在catch块中用输出语句打印信息,并不能很全面,直观,专业的把异常信息给显示出来。

 

例2.

 1     public static void main(String[] args) {  
 2         int i = 7;  
 3         int j = 0;  
 4         try { 
 5             if (j == 0) 
 6                 throw new ArithmeticException();   
 7             System.out.println("打印计算结果i/j=" + i / j);  
 8         }  
 9         catch (ArithmeticException e) {   
10             e.printStackTrace();
11         }  
12         System.out.println("运行结束");  
13     } 

run:
  java.lang.ArithmeticException
  at com.westward.Demo4.main(Demo4.java:9)
 运行结束

结论:通过catch块中,调用异常对象ArithmeticException的printStackTrace()方法,能够将对应的异常信息打印出来,trycatch块下面的程序继续执行。

例3.

如果我们想在try块中,j==0时,程序抛出异常,并且程序中断,可以继续看下面的demo。

 1     public static void main(String[] args) {  
 2         int i = 7;  
 3         int j = 0;  
 4         try { 
 5             if (j == 0) 
 6                 throw new ArithmeticException();   
 7             System.out.println("打印计算结果i/j=" + i / j);  
 8         }  
 9         catch (ArithmeticException e) {   
10             throw e;
11         }  
12         System.out.println("运行结束");  
13     }

run:
  Exception in thread "main" java.lang.ArithmeticException
  at com.westward.Demo4.main(Demo4.java:9)

结论:通过运行结果,我们可以看到,在catch块中throw ArithmeticException对象后,throw语句将异常抛给Java运行时系统,由系统寻找匹配的异常处理器catch,由于未找到相应的异常处理器catch(没有catch或者有catch,但是类型不符合),所以异常最后抛给了jvm,并在后台打印异常信息,程序在此中断,trycatchfinally下面的程序代码不在执行。

附加:事实上,ArithmeticException为RuntimeException(运行时异常,不可查异常)的子类。而运行时异常将由运行时系统自动抛出,不需要程序员使用throw语句显示抛出。

trycatch之catch对捕获异常的处理及后续代码的执行的探索

原文:http://www.cnblogs.com/westward/p/5164952.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!