try catch执行过程分析

article/2025/10/16 10:59:06

本篇文章带大家聊聊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 之后的代码执行了");}
}

输出结果:

image-20220714082900303

场景二

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 之后的代码执行了");}
}

执行结果:

image-20220714082900303

场景三

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 之后的代码执行了");}
}

执行结果:

image-20220714083607740

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 之后的代码执行了");}
}

image-20220714085209592

到此try catch的过程就验证完毕,在排查问题时知道此流程会帮助你更快的定位问题。


http://chatgpt.dhexx.cn/article/nvtBKYMH.shtml

相关文章

面试官问我 ,try catch 应该在for循环里面还是外面?

前言 有个老哥昨天被面试官欺负了,但是是被这个问题(标题)欺负的? 其实是个比较基础的问题,只要有了解过,叙述是非常简单OK的。 只要有初学者觉得有疑惑,那么我相信不止是他一个。 所以&#…

try catch异常捕获

这次我们介绍try catch异常捕获。下面是try catch的语法。 thy catch 的作用就是异常捕获,在一些会报错的地方时的时候才会用到。 例如这个代码,当我们在控制器时输入的不是数字而是其他的文字或者其他符号呢?所以这里程序就会报错&#xff0…

try catch 的作用

不加try catch package com.web; public class Test25 {public static void main(String[] args) {int i 1 / 0;System.out.println("i " i);System.out.println("aaaa");//直接不运行了} }加try catch package com.web;public class Test25 {public …

kotlin try catch使用方法

5 kotlin之 try catch kotlin的try catch比Java更简洁面料采用,使用更方便 val value "10a"var out: Int? null//错误处理try {out Integer.parseInt(value)} catch (e: NumberFormatException) {println("NumberFormatException")println(e.message)…

try catch的作用

try catch的作用:当程序发生错误时,能够保证程序继续执行下去。 用一个简单例子说明: 1:无try catch public static void main(String[] args) { int i; i 2/0; System.out.println(i); System.out.println(1111111111); } 运行结果&…

try catch finally

结论: 1、不管有木有出现异常,finally块中代码都会执行; 2、当try和catch中有return时,finally仍然会执行; 3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要…

try catch 嵌套

实践测试 在单元测试中写入以下方法: testMain()主方法, out()里面嵌套了两层try catch 异常代码写在内层try中 示例一: Testpublic void testMain(){out();log.info("后续处理业务");}public void out(){//外层trytry {System.out.println("外层输…

try和catch的用法

try 和 catch 是用于处理异常的语句,它们构成了一种异常处理机制。在一个 try 语句中,程序执行一段代码,如果发生了异常,则会被捕获,并转到相应的 catch 语句中进行处理。 例如,在下面的代码中&#xff0c…

try-catch的使用以及细节

文章目录 try-catch的使用以及细节1. 基本语法2. 注意细节快捷键 try-catch的使用以及细节 🎈 Java中提供 try 和catch块来处理异常。try块用于包含可能出错的代码。catch块用于处理try块中发生的异常。可以根据需要在程序中有多个try…catch块。 1. 基本语法 try{…

【小波变换】wavedecn方法

wavedecn wavedecn(data, wavelet, modesymmetric, levelNone, axesNone)Multilevel nD Discrete Wavelet Transform.Parameters----------data : ndarraynD input data# 可通过设置axes参数,来确定小波变化的维度axes : sequence of ints, optionalAxes over which…

Wave Engine 3.1 Released

Wave Engine最近发布了3.1版。 Wave Engine是一款完全免费的3D游戏引擎,能够针对大多数平台和XR设备。该版本带来了对.NET 5和C#9的支持以及图形上的改进。 我们很高兴地宣布,与Microsoft合作,我们刚刚发布了WaveEngine 3.1&…

小波变换——提取图像(低频/宏观)到(高频/微观)信息

对我来说,小波分解属于研究大结构框架中图像预处理最基础的地方,由于创新性不足,一年多前尝试过以后就被搁置;现已研究出较新的多尺度/多分辨率特征提取算法,故将小波变换留个纪念。 import cv2 import numpy as np i…

Waves插件

Waves插件 下载安装包查看是否存在之前版本的waves 用控制面板或者其他软件 卸载 去控制面板中,正常缷掉WAVES 9安装目录,把残留的WAVES文件夹干掉!清理注册表内的内容: 32bit : HKEY_LOCAL_MACHINE\Software\Waves 64bit : HKE…

小波变换(Wavelet Transform)

最近在学习数据挖掘的数据预处理一章中碰到了小波变换,之前并没有学习过有关信号处理的东西,所以参考网上的资料,对其做一个简单的了解,后面如果用得到,再做深入的学习。 本人是相关方面的小白,如有搬运理解…

基于小波变换实现图像增强

1,基于小波变换的图像低通滤波 %小波变换进行滤波变换 clc,clear,close all; Image rgb2gray(imread(baboon.jpg)); nIg imnoise(Image,gaussian); [C,S] wavedec2(nIg,3,db4);%采用db4小波对噪声图像进行3级分解 len length(C); C1 C;C2 C;C3 C; C1(S(1,1)…

waves服务器系统包,Waves Complete 12

Waves Complete 12是一款功能十分强大好用的音频制作类软件哦,且软件中还有着丰富的插件可供用户们选择和使用哦。且全套的音频效果器,也能够满足用户后期混音的需求哦~ Waves Complete 12介绍: 1、调整插件的界面显示比例 5种大小可调&#…

ES8311 低功耗单声道音频编解码器(中文)

版本11.0 低功耗单声道音频编解码器 特征 系统 • 高性能、低功耗多位音频ADC和DAC • I2S/PCM 主串行或从串行数据端口 • 256/384Fs, USB 12/24 MHz 和其他非标准音频系统时钟 • I2C 接口 ADC • 24 位、8 至 96 kHz 采样频率 • 100 dB 信噪比,-93 dB THDN…

小波变换对图像的分解与重构(含matlab代码)

01 小波变换原理 所谓的小波的小是针对傅里叶波而言,傅里叶波指的是在时域空间无穷震荡的正弦(或余弦波)。 相对而言,小波指的是一种能量在时域非常集中的波,它的能量有限,都集中在某一点附近&#xff0…

多尺度二维离散小波分解wavedec2

对X进行N尺度小波分解 [C,S]wavedec2(X,N,wname); clc,clear all,close all; load woman; [c,s]wavedec2(X,2,db1);%进行2尺度二维离散小波分解。分解小波函数-db1 [cH1,cV1,cD1]detcoef2(all,c,s,1);%尺度1的所有方向的高频系数 [cH2,cV2,cD2]detcoef2(all,c,s,2);%尺度2的所有…

图像处理-小波变换

小波指的是一种能量在时域非常集中的波,它的能量有限,都集中在某一点附近,而且积分的值为零,这说明它与傅里叶波一样是正交波。 图像的傅里叶变换是将图像信号分解为各种不同频率的正弦波。同样,小波变换是将图像信号分…