Try-catch-finally基本定义与使用
2019-02-19 10:22
211 查看
Java处理异常
语法
try{
//业务逻辑代码块}catch(Exception e){
//异常处理}finally{
}
-
try{ }是用于执行逻辑代码,逻辑代码在执行出现异常会进入catch{ }里进行处理;
-
catch{ }是来处理try{ }里的代码运行时抛出的异常,try{ }执行时出现异常catch{ }才会进行异常处理,里面的代码才会执行,否则catch{ }不会执行;
-
finally{ }无论try{ }有没有异常都会执行(最好不要再finally里写return);
- 异常处理准则(** 很重要可以帮助我们准确定位问题 **) 抛出和捕获异常可以抛给JVM处理,也可以使用try catch捕获 ,对于资源使用Try-With- Resource
- 底层代码抛出异常尽量做到处理此异常,不建议继续向上曾抛应及时处理
- 异常不要忽略,不要打印异常日志的同时将其抛出
- 优先捕获明确异常,不建议直接抛出Exception
- 抛出非运行时异常必须对其进行处理
示例代码
public static void main(String[] args) { try { System.out.println("try 执行"); int a = 1/0; //模拟异常 } catch (Exception e) { System.out.println("catch 执行"); } finally { System.out.println("finally 执行"); } } 控制台输出结果 try 执行 catch 执行 finally 执行 根据判定结果而定,执行顺序为try{ } catch{ } finally{ }
下面介绍三个代码块有return的执行顺序
1.public static void main(String[] args) { Test t = new Test(); System.out.println("main i"+t.demo()); } public int demo(){ int i = 0; try { i++; System.out.println("try {} i="+i); return i; } catch (Exception e) { e.printStackTrace(); System.out.println("catch {} i="+i); return i; } finally { i=10; System.out.println("finally {} i="+i); } } 执行结果 try {} i=1 finally {} i=10 main i=1 先是先执行了try里的 i++ ;紧接着跳到finally里执行 i=10,并且输出,最后才执行try里的return i; 2.public int demo(){ int i = 0; try { i++; System.out.println("try {} i="+i); i=i/0;//模拟异常 return i; } catch (Exception e) { e.printStackTrace(); System.out.println("catch {} i="+i); return i; } finally { i=10; System.out.println("finally {} i="+i); return i; } } 执行结果 try {} i=1 catch {} i=1 finally {} i=10 main i=10 先执行了try里的i++,输出i结果,然后模拟异常进入到catch里执行输出i结果,最后跳到了finally里执行赋值并 输出且return i 值,main 输出i=10,
执行顺序总结
try catch finally 无论如何执行都会执行finally里的代码,即使抛出异常也会执行,就说明如果在try里写的逻辑处理代码和一系列的运算逻辑处理最后写了return返回给上层调用,
但是此时有finally块,里面写了return ,根据测试验证结果无论怎么执行都会执行finally,这就意味着try里的逻辑处理和返回没有丝毫意义,最后都被这个finally干死了,然后try里的return就不在执行了,所以强烈不建议在finally里写return!
try里是写逻辑代码的,写什么样的逻辑代码呢?
答:try是做异常处理的,当然是写可能会抛异常的代码
- 关于catch的用法我会在后期更新里详细分析
简说finally
finally可以省略不写;
finally适合做资源释放,如JDBC连接,IO流等;
初入茅庐看到此文章如有不妥,还望各路大神批评指正
相关文章推荐
- C#学习使用try-catch-finally错误处理表达式(续)--定义自己的异常消息类
- java只使用try和finally不使用catch的原因和场景
- 【C#】小心使用Try,Catch,finally
- c#关于try catch finally的使用,判断日期格式是否正确
- java关于异常处理只使用try-finally而不使用catch
- 使用try、catch、finally语句块需要注意
- try - catch - finally使用总结
- Java异常处理(try、catch、finally使用)
- iOS中@try@catch@finally捕获异常使用
- Java - Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别如何使用?
- JAVA中try、catch、finally的使用及finally执行顺序详解
- Java 中使用 try-catch-finally处理异常
- javascript中 try catch finally 的使用
- try...catch...finally;throw与throws关键字联合使用
- Jdk1.7(及以上) 使用 try-with-resources 替代try-catch-finally
- 如何缩减Try{}Catch{}Finally{}代码----定义一个公用的Try{}Catch{}Finally{}
- Java异常--基本概念try...catch...finally
- java只使用try和finally不使用catch的原因和场景
- return 于try{}catch(Exception e){}finally{}语句结合使用的一点注意事项
- 4.第三单元任务三实训:编写一个类ExceptionTest,在main方法中使用try-catch-finally语句结构实现:在try语句块中,编写两个数相除操作,相除的两个操作数要求程序运行时用