try catch执行过程分析
Posted 無昂博奥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了try catch执行过程分析相关的知识,希望对你有一定的参考价值。
本篇文章带大家聊聊try catch的执行过程,有时候在开发的过程中,try代码里如果出现异常,catch后的步骤还会继续执行吗?以及finally的使用。
下面来分析一下几种使用场景:
场景一:
try代码块中出现异常后,系统会继续执行catch代码块的程序。catch代码块外的代码也会继续被执行。
/**
* Created By wuang
* Create Date 2022/7/12 17:47
* Description:
*/
public class TryCatchDemo
public static void main(String[] args)
try
int[] myNumbers = 1, 2, 3;
System.out.println(myNumbers[10]);
catch (Exception e)
System.out.println("Something went wrong.");
System.out.println("catch 之后的代码执行了");
输出结果:
场景二
try代码块中抛出的异常被catch捕获,此时需要注意,catch捕获的异常必须是try抛出的。此时程序会继续执行catch代码块外的代码。否则请看场景三
/**
* Created By wuang
* Create Date 2022/7/12 17:47
* Description:
*/
public class TryCatchDemo
public static void main(String[] args)
try
//抛出异常
throw new ArrayIndexOutOfBoundsException();
// int[] myNumbers = 1, 2, 3;
// System.out.println(myNumbers[10]);
catch (ArrayIndexOutOfBoundsException e)
System.out.println("Something went wrong.");
System.out.println("catch 之后的代码执行了");
执行结果:
场景三
try抛出的异常,在catch中没有捕获,则此时程序不会继续执行catch代码块内的代码,也不会执行catch代码块之外的代码。
/**
* Created By wuang
* Create Date 2022/7/12 17:47
* Description:
*/
public class TryCatchDemo
public static void main(String[] args)
try
throw new ArrayIndexOutOfBoundsException();
// int[] myNumbers = 1, 2, 3;
// System.out.println(myNumbers[10]);
catch (NullPointerException e)
//此处捕获的异常,不是ArrayIndexOutOfBoundsException,则catch中的
System.out.println("Something went wrong.");
System.out.println("catch 之后的代码执行了");
执行结果:
finally代码块
针对上面出现的三种场景,finally中代码块都会被执行。针对场景三,finally代码块外的代码不会被执行了,这就和场景三的结论相吻合。
/**
* Created By wuang
* Create Date 2022/7/12 17:47
* Description:
*/
public class TryCatchDemo
public static void main(String[] args)
try
throw new ArrayIndexOutOfBoundsException();
// int[] myNumbers = 1, 2, 3;
// System.out.println(myNumbers[10]);
catch (NullPointerException e)
System.out.println("Something went wrong.");
finally
System.out.println("finally 中的程序执行了.");
System.out.println("catch 之后的代码执行了");
到此try catch的过程就验证完毕,在排查问题时知道此流程会帮助你更快的定位问题。
以上是关于try catch执行过程分析的主要内容,如果未能解决你的问题,请参考以下文章