Java异常处理机制:try...catch...的执行流程

Java异常处理机制:try…catch…的执行流程

在项目中遇到try…catch…语句,因为对Java异常处理机制的流程不是很清楚,导致对相关逻辑代码不理解。所以现在来总结Java异常处理机制的处理流程:

1.异常处理的机制如下:
  1. 在方法中用 try… catch… 语句捕获并处理异常,catch 语句可以有多个,用来匹配多个不同类型的异常。
  2. 对于处理不了的异常或者要转型的异常,在方法的声明处通过 throws 声明异常,通过throw语句拋出异常,即由上层的调用方法来处理该异常。
try {
    逻辑程序块
} catch(ExceptionType1 e) {
    处理代码块1
} catch (ExceptionType2 e) {
    处理代码块2
    throw(e);    // 再抛出这个"异常"
}

注:如果有异常发生,只会进入到一个catch语句块中
2.Exception 是程序正常运行过程中可以预料到的意外情况,并且应该被开发者捕获,进行相应的处理。

在try语句块中Exception 会以两种方式出现:

  1. 一是发生在程序编译时或运行时发生异常,是被程序抛出,用户没有主动抛出异常;
  2. 二是用户主动抛出异常,使用throw关键字主动抛出异常。该异常可以是业务逻辑的异常。
try {
    // 可能发生异常的语句
} catch(ExceptionType e) {
    // 处理异常语句
}   
3.执行流程
try语句块中发生了异常

如果try语句块中发生了异常,那么程序就会把对应的异常对象抛出,然后catch语句就会捕获该异常并且处理。

注意:如在try语句块的第二句语句发生异常,那么在第二句以后的语句都不会执行了,转到catch语句块中开始执行。处理完catch语句块的内容,就会执行catch语句块之后的内容

try语句块中没有发生异常

如果try语句块中没有发生异常,那么try语句块中的内容会由上到下依次执行,然后catch语句块会全部被跳过,接下来执行catch语句块之后的内容。
try...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+ "\n");
        }
    }
}

输出结果分析: 当有i = 2时,用户主动抛出异常,可以看到为 message, a 的赋值语句没有执行, 进入到catch语句块中,然后再执行catch语句块以后的内容

message = "错误"
a = 0
输出结果
i 等于0
正确
a = 123

i 等于1
正确
a = 123

i 等于2
错误
a = 0
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值