前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java】throw异常后代码还执行吗?80%小伙伴竟然不知道

【Java】throw异常后代码还执行吗?80%小伙伴竟然不知道

原创
作者头像
JavaDog程序狗
修改2024-09-20 09:47:59
1320
修改2024-09-20 09:47:59
举报
文章被收录于专栏:后端

前言

🍊缘由

我这一生如履薄冰,异常之后该怎么走
🐣闪亮主角:

大家好,我是【JavaDog程序狗】

今天跟大家分享Java异常后,代码到底还执不执行?

本狗会以代码形式加以说明,详细将可能的情况予以列出,源码贴在后面,按需自测

😈你想听的故事

最近狗哥受领导任命,在公司帮忙面试

每当有年轻活力的面孔出现,就感慨道时光的飞逝,从最年轻的小白狗熬成老白狗

但最大的问题是,为啥每次面试都是爷们,没有妹子!!!

不好意思激动了,其实面试最大的问题就是基础,一般干过几年的程序员都会出现眼高手低的情况

就像本狗问了关于异常之后代码执行情况,基本大回答的都不满意

遂总结一下,跟大家来聊一下这异常之后代码的旅程,回顾一下基础知识

正文

🎯主要目标

实现1大重点
彻底弄懂异常后代码执行情况

🥦目标讲解

1.没有try-catch

方法A,没有使用try-catch捕获异常,出现异常后,后续代码不会执行

代码语言:java
复制
public static void A() {
	// 正常打印
    System.out.println("1.我在A方法,我在出现异常前打印");
    // 出现java.lang.ArithmeticException: / by zero 异常
    int a = 1 / 0;
    // 无法执行
    System.out.println("2.我在A方法,出现异常后打印");
}

******

2.使用try-catch捕获异常

方法B,使用try-catch捕获,出现异常后,try中后续代码不会执行,但后续代码不影响

代码语言:java
复制
public static void B() {
   	System.out.println("1.我在B方法,我在出现异常前打印");
    try {
    	// 出现java.lang.ArithmeticException: / by zero 异常
        int a = 1 / 0;
        // 无法执行
        System.out.println("2.我在B方法,出现异常后打印");
    } catch (Exception e) {
        e.printStackTrace();
        // 正常执行
        System.out.println("3.我在B方法,catch异常后打印");
    } finally {
    	// 正常执行
        System.out.println("4.我在B方法,finally后打印");
    }
    // 正常执行
    System.out.println("5.我在B方法,try-catch-finally后打印");
}

******

3.使用try-catch捕获,并throw抛出异常

方法C,使用try-catch捕获,并throw抛出异常,后续代码不影响

  • throw后打印代码编译无法通过
  • throw后无代码,try之后所有代码不受影响
代码语言:java
复制
public static void C() {
   	System.out.println("1.我在C方法,我在出现异常前打印");
    try {
    	// 抛出异常
        throw new Exception("我是异常");
    } catch (Exception e) {
        System.out.println("2.我在C方法,catch异常后打印");
        // 正常执行
        e.printStackTrace();
    } finally {
    	// 正常执行
        System.out.println("3.我在C方法,finally后打印");
    }
    // 正常执行
    System.out.println("4.我在C方法,try-catch后打印");
}

******

4.在循环中,没有使用try-catch捕获,异常后全部代码阻塞
代码语言:java
复制
public static void D() {
    for(int i=0; i<5; i++){
        System.out.println("第" + i + "次循环");
        int a = 1 / 0;
        // 异常后代码无法执行
        System.out.println("1.我在D方法,我在出现异常前打印");
    }
    // 异常后代码无法执行
    System.out.println("2.我在D方法,我在循环外打印");
}

******

5.在循环中,使用try-catch捕获,throw异常后代码不受影响
代码语言:java
复制
public static void E() {
    for(int i=0; i<5; i++){
        System.out.println("第" + i + "次循环");
        try {
            throw new Exception("我是异常");
        } catch (Exception e) {
        	// 正常执行
            System.out.println("1.我在E方法,catch异常后打印");
            e.printStackTrace();
        } finally {
        	// 正常执行
            System.out.println("2.我在E方法,finally后打印");
        }
    }
    // 正常执行
    System.out.println("3.我在E方法,我在循环外打印");
}

总结

  • 当Java程序中出现异常时,异常之后的代码是否执行取决于异常是否被捕获以及如何处理这些异常。
  • 使用try-catch结构可以控制异常发生后的程序流程。
  • finally块总是会被执行,除非程序在此之前的某个点被强制终止(例如通过调用System.exit())。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 🍊缘由
      • 我这一生如履薄冰,异常之后该怎么走
  • 正文
    • 🎯主要目标
      • 实现1大重点
    • 🥦目标讲解
      • 1.没有try-catch
      • 2.使用try-catch捕获异常
      • 3.使用try-catch捕获,并throw抛出异常
      • 4.在循环中,没有使用try-catch捕获,异常后全部代码阻塞
      • 5.在循环中,使用try-catch捕获,throw异常后代码不受影响
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档