news 2026/6/1 1:49:50

[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/5/31 23:30:21

Linly-Talker镜像提供详细中文文档和示例代码

Linly-Talker:一键部署的中文数字人系统如何重塑人机交互 你有没有想过,只需要一张照片和一段文字,就能让一个虚拟人物“活”起来,开口为你讲解课程、播报新闻,甚至进行实时对话?这听起来像是科幻电影中的场…

作者头像 李华
网站建设 2026/6/1 7:11:43

13、Windows Socket编程:从基础到应用的深度解析

Windows Socket编程:从基础到应用的深度解析 1. 客户端连接检查与非阻塞编程 在网络编程中,确保与客户端的连接稳定至关重要。可以通过 CheckConnection 函数来检查与客户端的连接状态。以下是该函数的示例代码: void CheckConnection (HWND hWnd, SOCKET soc, SOCKET…

作者头像 李华
网站建设 2026/6/1 10:46:13

Linly-Talker在智慧农业大棚中的语音指导应用

Linly-Talker在智慧农业大棚中的语音指导应用 在广袤的农田与现代化温室之间,一场静默却深刻的变革正在发生。当一位年过半百的菜农站在黄瓜架前,用带着浓重方言的声音问“这叶子白了一片是不是要打药?”时,回应他的不再是翻书查资…

作者头像 李华
网站建设 2026/6/1 0:11:36

Linly-Talker支持语音唤醒功能吗?类似Siri体验

Linly-Talker 能否实现“说一句就醒”的语音唤醒体验? 在智能音箱普及的今天,我们早已习惯了对设备喊一声“嘿 Siri”或“小爱同学”,就能立刻唤醒一个随时待命的数字助手。这种“始终在线、听觉优先”的交互方式,正悄然成为人机沟…

作者头像 李华
网站建设 2026/5/29 2:28:33

DeepSeek-V3.1:混合思维模式提升效率与智能

DeepSeek-V3.1:混合思维模式提升效率与智能 【免费下载链接】DeepSeek-V3.1-Base-BF16 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/DeepSeek-V3.1-Base-BF16 大语言模型领域再迎新突破——DeepSeek-V3.1正式发布,通过创新的混合思维模…

作者头像 李华
网站建设 2026/6/1 8:06:04

Emu3.5:原生多模态模型的世界建模革命

导语:BAAI团队推出的Emu3.5模型以"统一世界建模"为核心,通过原生多模态架构和创新推理技术,重新定义了AI理解与生成视觉-文本内容的能力边界。 【免费下载链接】Emu3.5 项目地址: https://ai.gitcode.com/BAAI/Emu3.5 行业…

作者头像 李华