0x40000015装系统出现c报错 程序异常退出是什么原因( 七 )

注意:一次捕获,多次处理的异常处理方式,要求多个catch中的异常不能相同,并且若catch中的多个异常之间有子父类异常的关系,那么子类异常要求在上面的catch处理,父类异常在下面的catch处理 。
例如:
3.5.2 try-finally 形式: try{//(尝试运行的)程序代码}finally{//异常发生,总是要执行的代码} try-finally表示对一段代码不管执行情况如何,都会走 finally 中的代码,
例如:
public class TryFinallyDemo {public static void main(String[] args) {int a = 10;int b = 0;try{System.out.println(a / b);System.out.println("会走try吗");}finally{System.out.println("会finally吗");//会finally吗}System.out.println("会走外面吗");}} 可以看到程序异常了,还是会去走finally语句块的代码 。
3.5.3 try-catch-finally 形式: try {// 可能会发生异常的程序代码} catch (异常类型Ae){// 捕获并处置try抛出的异常类型A} finally {// 无论是否发生异常,都将执行的语句块} 跟try-finally一样表示对一段代码不管执行情况如何,都会走 finally 中的代码 。
当方法中发生异常,异常处之后的代码不会再执行,如果之前获取了一些本地资源需要释放,则需要在方法正常结束时和 catch 语句中都调用释放本地资源的代码,显得代码比较繁琐,finally 语句可以解决这个问题 。
例如:
public class TryCatchFinallyDemo {public static void main(String[] args) {test();}public static void test() {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");Date date = null;try {//date= simpleDateFormat.parse("2020-10-06");//第一次运行成功date= simpleDateFormat.parse("2020年10月06日");} catch (ParseException e) {e.printStackTrace();}finally{System.out.println("finally这里一定会执行");}System.out.println("会走外面这里吗"date);}} 运行成功的代码后结果:
finally这里一定会执行会走外面这里吗Tue Oct 06 00:00:00 CST 2020 运行失败的代码后结果:
java.text.ParseException: Unparseable date: "2020/10/06"at java.text.DateFormat.parse(DateFormat.java:366)at com.it.test3.TryCatchFinallyDemo.test(TryCatchFinallyDemo.java:19)at com.it.test3.TryCatchFinallyDemo.main(TryCatchFinallyDemo.java:12)finally这里一定会执行会走外面这里吗null 可以看到,无论失败,都会执行finally语句块的代码 。
注意:try-catch-finally中,如果catch中 return了,finally还会执行吗?public class TryCatchFinallyDemo2 {
public static void main(String[] args) { test(); } public static void test() { int a = 10; try{ System.out.println(a / 0); }catch(ArithmeticException e) { e.printStackTrace(); return ; }finally { System.out.println(“finally”); } }}运行结果:
java.lang.ArithmeticException: / by zeroat com.it.test3.TryCatchFinallyDemo2.test(TryCatchFinallyDemo2.java:11)at com.it.test3.TryCatchFinallyDemo2.main(TryCatchFinallyDemo2.java:5)finally

推荐阅读