首页 > 代码库 > Java检查型异常和非检查型异常
Java检查型异常和非检查型异常
1.代码
public class ExcepTest { /** * @param args */ public static void main(String[] args) { System.err.println("111111111111");// say(); //抛出异常,但是代码不显示的try..catch.. // calc(); //抛出异常,但是代码不显示的try..catch.. // try {// show();// } catch (Exception e) {// e.printStackTrace();// System.err.println("异常成功捕获。。");// } // try {// view();// } catch (Exception e) {// e.printStackTrace();// System.err.println("异常成功捕获。。");// } calc22(); System.err.println("222222222222"); } public static void say(){ //new NullPointerException System.err.println("say>>>>"); throw new NullPointerException(); } public static void calc() { //throws ArithmeticException ,这个异常不提示。 System.err.println("calc>>>>"); int i = 0, j = 0; System.err.println( i/j ); } public static void show() throws Exception{ //这个异常提示。 System.err.println("show>>>>"); int i = 0, j = 0; System.err.println( i/j ); } public static void view() throws Exception{ System.err.println("view>>>>"); throw new Exception(); } public static void calc22(){ System.err.println("calc22>>>>"); try { int i = 0, j = 0; int k = i/j ; } catch (Exception e) { System.err.println("异常处理完毕。。。。");// throw e; //异常再度抛出。// throw new ArithmeticException(); //继承自exception的则是检查型异常(当然,runtimeexception本身也是exception的子类// throw new RuntimeException(); //(当然,runtimeexception本身也是exception的子类 //继承自runtimeexception或error的是非检查型异常 //ArithmeticException继承RuntimeException } System.err.println("calc22>>>>calc22"); }}
2.说明
使用spring难免要用到spring的事务管理,要用事务管理又会很自然的选择声明式的事务管理,在spring的文档中说道,spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚,而对检查型异常则不进行回滚操作。
那么什么是检查型异常什么又是非检查型异常呢?
最简单的判断点有两个:
1.继承自runtimeexception或error的是非检查型异常,而继承自exception的则是检查型异常(当然,runtimeexception本身也是exception的子类)。
2.对非检查型类异常可以不用捕获,而检查型异常则必须用try语句块进行处理或者把异常交给上级方法处理总之就是必须写代码处理它。
引用:http://blog.csdn.net/yixiaoqingyuz/article/details/4485606
Java检查型异常和非检查型异常
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。