news 2026/6/23 10:24:53

[Java]PTA:jmu-Java-06异常-finally

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[Java]PTA:jmu-Java-06异常-finally

代码中向系统申请资源,到最后都要将资源释放。

现有一Resource类代表资源类,包含方法:

  1. open(String str)打开资源,声明为抛出Exception(包含出错信息)。
  2. close()方法释放资源,声明为抛出RuntimeException(包含出错信息)

现在根据open(String str)中str的不同,打印不同的信息。str的内容分为4种情况:

  1. fail fail,代表open和close均会出现异常。打印open的出错信息与close的出错信息。
  2. fail success,代表open抛出异常,打印open出错信息。close正常执行,打印resource release success
  3. success fail ,代表open正常执行,打印resource open success。close抛出异常,打印close出错信息。
  4. success success,代表open正常执行,打印resource open success,close正常执行打印resource release success。

注1:你不用编写打印出错信息的代码。
注2:捕获异常后使用System.out.println(e)输出异常信息,e是所产生的异常。

裁判测试程序:

public static void main(String[] args) { Scanner sc = new Scanner(System.in); Resource resource = null; try{ resource = new Resource(); resource.open(sc.nextLine()); /*这里放置你的答案*/ sc.close(); }

以下输入样例代表输入success success。

输入样例

success success

输出样例

resource open success resource release success

代码如下

// 第一步:open成功,打印open成功的信息 System.out.println("resource open success"); } catch (Exception e) { // 捕获open()抛出的Exception // 第二步:open失败,打印open的异常信息 System.out.println(e); } finally { // 第三步:无论open是否成功,都尝试关闭资源 if (resource != null) { // 避免resource为null时调用close() try { resource.close(); // 执行close() // close成功,打印释放成功 System.out.println("resource release success"); } catch (RuntimeException e) { // 捕获close()抛出的RuntimeException // close失败,打印close的异常信息 System.out.println(e); } } }

注意:

  1. 资源释放必须用 finally(无论是否抛异常,close 必执行);
  2. 不同作用域的 catch 块彼此独立,子类异常不会被父类 catch 覆盖;
  3. RuntimeException(非受检)的捕获:要么在发生处就近捕获,要么放任向上抛
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 11:46:13

9、高级 Active Directory 配置与复制管理全解析

高级 Active Directory 配置与复制管理全解析 1. 命令行管理复制活动介绍 在 Active Directory 环境中,通过命令行工具管理复制是一项重要技能。下面以 Activity 2 - 7 为例,详细介绍如何使用 repadmin 和 dcdiag 这两个命令行程序来管理复制。 - 活动概述 - 所需…

作者头像 李华
网站建设 2026/6/23 21:32:40

Magistral-Small-1.2:多模态推理新升级

Mistral AI推出Magistral-Small-1.2模型,首次实现240亿参数级模型的多模态能力与本地高效部署,标志着轻量化大模型在推理与视觉理解领域的重要突破。 【免费下载链接】Magistral-Small-2509-FP8-torchao 项目地址: https://ai.gitcode.com/hf_mirrors…

作者头像 李华
网站建设 2026/6/23 22:21:23

6、Windows 操作系统架构与网络通信详解

Windows 操作系统架构与网络通信详解 1. Windows 操作系统概述 在企业环境中,大多数计算机都安装了某种版本的 Windows 操作系统。尽管运行 Windows 3.0 的机器越来越少,但仍有许多工作站使用 Windows 3.1 或 Windows for Workgroups 3.1/3.11(WFW),我们通常将这些 Wind…

作者头像 李华
网站建设 2026/6/23 12:49:54

7、Windows网络与RPC编程全解析

Windows网络与RPC编程全解析 1. Windows操作系统模式与网络架构 Windows(3.0/3.1版本)有三种操作模式,分别是实模式、标准模式和增强模式。Windows for Workgroups 3.11 是Windows 3.x 系列中最具网络功能的版本。 标准模式和增强模式的Windows for Workgroups(WFW)都内…

作者头像 李华
网站建设 2026/6/23 20:54:15

9、RPC 通信基础设施设计与实现

RPC 通信基础设施设计与实现 1. RPC 数据传输与类型问题 RPC(远程过程调用)在数据传输时,每个远程函数的数据参数需要明确无误。开发者可使用特殊属性(如 [string] )来强类型化远程函数的参数。应用程序设计者还需特别注意数据在客户端和服务器之间传输时的编组和解组…

作者头像 李华
网站建设 2026/6/22 15:17:10

15、Windows管道通信:命名管道与匿名管道详解

Windows管道通信:命名管道与匿名管道详解 1. 命名管道的模拟与安全控制 命名管道是Windows系统中一种重要的进程间通信(IPC)机制。在 NamedPipe_ThreadRoutine 函数中,展示了命名管道的基本使用流程: NamedPipe_ThreadRoutine ( ) {HANDLE hNamedPipe ; BOOL fRe …

作者头像 李华