Java异常处理机制:try...catch...的执行流程
Posted 谭宝贵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java异常处理机制:try...catch...的执行流程相关的知识,希望对你有一定的参考价值。
Java异常处理机制:try...catch...的执行流程
在项目中遇到try...catch...语句,因为对Java异常处理机制的流程不是很清楚,导致对相关逻辑代码不理解。所以现在来总结Java异常处理机制的处理流程:
1.异常处理的机制如下:
- 在方法中用 try... catch... 语句捕获并处理异常,catch 语句可以有多个,用来匹配多个不同类型的异常。
- 对于处理不了的异常或者要转型的异常,在方法的声明处通过 throws 声明异常,通过throw语句拋出异常,即由上层的调用方法来处理该异常。
try { 逻辑程序块 } catch(ExceptionType1 e) { 处理代码块1 } catch (ExceptionType2 e) { 处理代码块2 throw(e); // 再抛出这个"异常" } 注:如果有异常发生,只会进入到一个catch语句块中
2.Exception 是程序正常运行过程中可以预料到的意外情况,并且应该被开发者捕获,进行相应的处理。
Exception 可以以两种方式出现:
- 一是发生在程序编译时或运行时发生异常,是被程序抛出,用户没有主动抛出异常;
- 二是用户主动抛出异常,使用throw关键字主动抛出异常。该异常可以是业务逻辑的异常。
try {
// 可能发生异常的语句
} catch(ExceptionType e) {
// 处理异常语句
}
3.执行流程
try语句块中发生了异常
如果try语句块中发生了异常,那么程序就会把对应的异常对象抛出,然后catch语句就会捕获该异常并且处理。
注意:如在try语句块的第二句语句发生异常,那么在第二句以后的语句都不会执行了,转到catch语句块中开始执行。处理完catch语句块的内容,就会执行catch语句块之后的内容
try语句块中没有发生异常
如果try语句块中没有发生异常,那么try语句块中的内容会由上到下依次执行,然后catch语句块会全部被跳过,接下来执行catch语句块之后的内容。
举个栗子:
public class ExceptionTest { public static void main(String[] args) { for (int i = 0; i < 3; i++) { String message = ""; int a = 0; try{ if (i == 1){ throw new Exception("错误"); } message = "正确"; a= 123; }catch (Exception e){ message = e.getMessage(); } System.out.println( "i 等于" + i); System.out.println(message ); System.out.println("a = " + a+ " "); } } }
输出结果分析:
当有i = 2时,用户主动抛出异常,可以看到为 message, a 的赋值语句没有执行, 进入到catch语句块中,然后再执行catch语句块以后的内容
message = "错误" a = 0
输出结果
i 等于0 正确 a = 123 i 等于1 正确 a = 123 i 等于2 错误 a = 0
以上是关于Java异常处理机制:try...catch...的执行流程的主要内容,如果未能解决你的问题,请参考以下文章
水能详细讲解一下java 中的异常处理 try catch throw