[HeadFirst] try-catch-finally

2024-06-13 15:32
文章标签 try catch finally headfirst

本文主要是介绍[HeadFirst] try-catch-finally,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

try-catch-finally

当调用有风险时,有两种事情可能会发生。该方法成功地把try块执行完,不然就会把异常抛出。

    public static void testTry_catch_finally(){try {out.println("try block");throw new IOException("Test: try-catch-finally");out.println("Exception occurs. Never invoked"); // Java compiler error: unreachable statment} catch (IOException e){out.println(e.toString());return;}finally {out.println("finally block");}}

finally:无论如何都要执行的部分。

如果try失败了,抛出异常,程序goto到catch块。当catch执行完时,会执行finally块。当finally执行完时,会继续执行其余的部分。

如果try或catch块有return语句,finally还是会执行的。程序会goto到finally块,然后再回到catch的return语句上。


下面是上面代码的输出结果:

try block
java.io.IOException: Test: try-catch-finally
finally block


注意:

1. 如果将catch中的return换成System.exit(-1);,那么finally将永远不会被执行到。

因为System.exit(-1);是从JVM退出(程序也便不再被执行了),而return是从函数中退出(main方法还在)。

2. 如果将catch中的out换成对象err,那么e的值输出顺序是不固定的。


这篇关于[HeadFirst] try-catch-finally的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1057696

相关文章

C++第四十七弹---深入理解异常机制:try, catch, throw全面解析

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C++详解】 目录 1.C语言传统的处理错误的方式 2.C++异常概念 3. 异常的使用 3.1 异常的抛出和捕获 3.2 异常的重新抛出 3.3 异常安全 3.4 异常规范 4.自定义异常体系 5.C++标准库的异常体系 1.C语言传统的处理错误的方式 传统的错误处理机制:

try -catch-finally的理解,同时在try-catch-finally中含有return和throws的理解

在没有try-catch或try-catch-finally的情况下,程序正常执行到某行,在这行报错后,这行后面的代码就不执行了,程序就停止了,中断了。 例如   在有try-catch或try-catch-finally 情况上,在某行执行错误,在try中这行下的代码不执行,try外的代码执行。当然是catch在没有做处理的情况下。如果catch中做了处理,在不影响当前程序下,try

Java中finally关键字的使用

与其他语言的模型相比,finally 关键字是对 Java 异常处理模型的最佳补充。finally 结构使代码总会执行,而不管有无异常发生。使用 finally 可以维护对象的内部状态,并可以清理非内存资源。 如果没有 finally,您的代码就会很费解。例如,下面的代码说明,在不使用 finally 的情况下您必须如何编写代码来释放非内存资源: import java.net.*; impo

mysql Deadlock found when trying to get lock; try restarting transaction

一、现场情况 sql:insert into a ...... 数据库隔离级别:read-committed 表a有唯一索引 二、死锁发生的4个必要条件 1、互斥条件(Mutual Exclusion):资源独享 2、占有并等待条件(Hold and Wait):占有资源并等待其他资源 3、非抢占条件(No Preemption):占有的资源不可以被剥夺,只能主动释放 4、循环等待

C++异常处理: try,catch,throw,finally的用法

写在前面 所谓异常处理,即让一个程序运行时遇到自己无法处理的错误时抛出一个异常,希望调用者可以发现处理问题. 异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制. 也许我们已经使用过异常,但是你习惯使用异常了吗? 现在很多软件都是n*365*24小时运行,软件的健壮性至关重要.  内容导读本文包括2个大的异常实现概念:C++的标准异常和SEH异常. C++标

[置顶]C++异常处理:try,catch,throw,finally的用法

写在前面 所谓异常处理,即让一个程序运行时遇到自己无法处理的错误时抛出一个异常,希望调用者可以发现处理问题. 异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制. 也许我们已经使用过异常,但是你习惯使用异常了吗? 现在很多软件都是n*365*24小时运行,软件的健壮性至关重要.  内容导读本文包括2个大的异常实现概念:C++的标准异常和SEH异常. C++标

BFS —— POJ 3278 Catch That Cow

对应POJ题目:点击打开链接 Catch That Cow Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 54686 Accepted: 17096 Description Farmer John has been informed of the location of a fugitive cow

ES6中try-catch

在ES6(ECMAScript 2015)中,try-catch 语句的语法和使用方式与在之前的ECMAScript版本中是一样的。try-catch 语句用于处理代码中可能发生的错误,确保程序的健壮性和用户体验。 基本语法 try { // 尝试执行的代码块 // 如果发生错误,则执行 catch 块中的代码 } catch (error) { // 处理错误 // error

【C++】try 语句捕获异常,catch子句处理异常

#include <iostream>#include <stdexcept>using namespace std;int main(){int i1, i2;while(cin >> i1 >> i2){try{if (i2 == 0)throw runtime_error("分母为0!");cout << "i1除以i2的结果是: " << i1/i2 << endl;}catch(ru

try-catch-finally中finally的使用

1.finally时可选的 2.finally中声明的时一定会被执行的代码,即使catch中又出现异常了,try中有return语句,catch中有return语句的情况 3.像数据库连接,输入输出流,网络编程Socket等资源,JVM时不能自动的回收的,我们需要自己手动的进行资源的释放。此时的资源释放,就需要声明在finally中。