Flow control in try catch finally in Java2025年5月8日 | 阅读6分钟 try-catch-finally 序列在引发异常时可能随时发生,所有这些都将在下一节中介绍,以及在提供的每种情况下控制流如何工作。在异常处理期间,我们将通过几个例子来演示 try、catch 和 finally 如何协同工作。以下是我们可以在其中确定它的两种情况。 1. try-catch 子句或 try-catch-finally 子句中的控制流 情况 1: try 块处理异常,而 catch 块处理它们。 情况 2: catch 块不处理 try 块中发生的异常。 情况 3: try 块不包含异常。 2. try-finally 子句中的控制流 情况 1: try 块中发生异常。 情况 2: try 块中未发生异常。 1. try-catch 子句或 try-catch-finally 子句中的控制流在 try-catch 或 try-catch-finally 子句中,try 块首先运行。如果没有发生异常,控制将移至下一个语句,或者,如果存在,则移至 finally 块,并跳过 catch 块。如果发生异常,控制将移至适当的 catch 块。即使处理了异常或抛出了异常,finally 块(如果存在)总是在 try 或 catch 块之后运行,以确保清理任务已完成。 情况 1:try 块处理异常,而 catch 块处理它们如果 try 块语句引发了异常,控制将移至适当的 catch 块,而 try 块的其余部分将不执行。一旦 catch 块被执行,控制将传递给 finally 块(如果存在),然后程序的其余部分将被运行。 i. try-catch 中的控制流实施输出 The Exception caught in the Catch block Outside of the try-catch clause ii. try-catch-finally 子句中的控制流实施输出 The Exception caught in the Catch block The finally block executed Outside of the try-catch clause 情况 2:catch 块不处理 try 块中发生的异常在这种情况下,将使用默认的 方法 处理。如果存在 finally 块,则在执行完 finally 块后将使用默认的 方法 处理。 i. try-catch 中的控制流实施输出 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 8 out of bounds for length 8 at ControlTryCatchFinalExample3.main(ControlTryCatchFinalExample3.java:11) ii. try-catch-finally 子句中的控制流实施输出 The finally block executed Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 8 out of bounds for length 8 at ControlTryCatchFinalExample3.main(ControlTryCatchFinalExample3.java:11) 情况 3:try 块不包含异常Catch 块仅在响应异常时运行;因此,在这种情况下,它们永远不会运行。如果存在 finally 块,它将首先运行,然后程序的其余部分将执行。 i. try-catch 中的控制流实施输出 The catch block is getting executed... Outside of the try-catch clause ii. try-catch-finally 子句中的控制流实施输出 The catch block is getting executed... The finally block is usually executed Outside of the try-catch clause 2. try-finally 子句中的控制流在这种情况下,无论 try 块中是否发生异常,finally 都将始终执行。但是,是否发生异常将决定控制流的执行方式。 在 try-finally 子句中,无论是否引发异常,try 块都会首先运行。如果没有发生异常,控制将通过 try 和 finally 块。由于没有 catch 块,在 try 块中发生的异常不会被直接处理;但是,在异常进一步传播之前,finally 块保证会运行。即使程序由于异常或 try 块中的 return 语句而突然终止,finally 块也始终执行,以确保完成关键的维护任务(如关闭资源)。 情况 1:try 块中发生异常如果 try 块中发生异常,在 finally 块之后,默认的 异常处理 机制将接管控制流。 实施输出 The finally block is usually executed Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 8 out of bounds for length 8 at ControlTryCatchFinalExample7.main(ControlTryCatchFinalExample7.java:11) 情况 2:try 块中未发生异常。如果 try 块中没有异常,控制流将移至 finally 块,然后程序的其余部分将继续执行。 实施输出 Inside the try block and try block fully executed The finally block is usually executed Outside of the try-catch clause 下一主题Java 中的不可触碰数 |
在本节中,我们将学习什么是 Strontio 数,并创建 Java 程序来检查给定数字是否为 Strontio。Strontio 数程序经常在 Java 编码测试和学术界中出现。Strontio 数 Strontio 数是指四位数字,当乘以……
阅读 3 分钟
处理键值对数据是各种 Java 应用程序中的常见需求。通常,数据以字符串或字符串数组的形式到达,并将其转换为 Map 以进行有效处理变得至关重要。在同一上下文中,Map 提供了一种便捷的方式来访问和操作数据...
5 分钟阅读
在本节中,我们将学习什么是不可达数,并创建 Java 程序来检查给定数字是否是不可达数。不可达数程序经常在 Java 编码面试和学术界中出现。不可达数 一个数 N 被称为...
阅读 3 分钟
排列可以定义为,将给定集合的所有成员排列成序列的过程。排列系数用 P(n, r) 表示。它给出从 n 个元素中取 r 个元素的排列数。因此,如果我们有...
阅读 8 分钟
JavaTuples 库中的 KeyValue 类是一个专门的 Tuple,包含两个元素:一个键和一个值。它提供了一种比通用索引 Tuple 更有意义和自解释的方式来表示键值对。作为一个 Tuple,`KeyValue` 类拥有所有特征和...
11 分钟阅读
在 Java 中使用下划线(_)作为变量名一直是开发者讨论的话题,这主要是由于其在 Java 语言约定中的演变及其对可读性、遵循约定和最佳实践的影响。以下是关于使用下划线作为变量名的详细探讨……
阅读 3 分钟
? 编程是一种锻炼或练习,可以增强我们的逻辑思维并提高解决问题的能力。它教我们如何借助计算机程序或软件来完成任务。因此,简单来说,编程就是实现解决方案的任务...
阅读 8 分钟
在 Java 中,不可变类可以定义为,当它的对象被创建时,它的内容就不能再被改变。Java 中的所有包装类,如 Integer、Boolean、Byte、Short 都是不可变的。在 Java 中,不可变类以提供各种优势而闻名……
5 分钟阅读
给出了一个包含 n 个数字的输入数组 inputArr[]。我们的任务是找到两个子数组之间的最小差值。子数组由给定的输入数组构成。如果一个元素属于一个子数组,那么它不能...
阅读 8 分钟
Java 中的套接字编程支持客户端和服务器之间的网络通信。由于套接字作为通信端点,因此它可以发送和接收数据。客户端和服务器必须知道彼此的 IP 地址以及一个特定的...
阅读9分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India