本篇文章带大家聊聊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 之后的代码执行了");
}
}
文章来源:https://www.toymoban.com/news/detail-557122.html
到此try catch的过程就验证完毕,在排查问题时知道此流程会帮助你更快的定位问题。文章来源地址https://www.toymoban.com/news/detail-557122.html
到了这里,关于try catch执行过程分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!