尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

动手动脑5

动手动脑5
📅 发布时间:2026/6/18 18:04:23

https://files.cnblogs.com/files/blogs/847696/动手动脑5.zip?t=1762256201&download=true

image
程序在第5行有一个问题:
int i=1, j=0, k;
k=i/j; // 这里会在 try-catch 块之前就抛出异常,导致程序终止
正确的异常处理流程
try 块:包含可能抛出异常的代码 k = i/j
catch 块:捕获特定类型的异常
第一个 catch 捕获 ArithmeticException(算术异常)
第二个 catch 捕获更通用的 Exception
finally 块:无论是否发生异常都会执行
异常处理基础知识总结

  1. 异常类型
    检查异常:必须处理(如 IOException)
    非检查异常:RuntimeException 及其子类(如 ArithmeticException)
  2. 异常处理机制
    try {
    // 可能抛出异常的代码
    } catch (SpecificException e) {
    // 处理特定异常
    } catch (Exception e) {
    // 处理其他异常
    } finally {
    // 无论是否异常都会执行(常用于资源清理)
    }
  3. 关键特点
    异常传播:异常会沿着调用栈向上传播
    多重 catch:从具体到一般的顺序排列
    finally 保证:即使有 return 或异常,finally 也会执行

image
image
程序执行流程:
程序进入外层 try 块。

在内层 try 块中,抛出 ArrayIndexOutOfBoundsException 异常。

该异常被内层 catch 块捕获,输出:ArrayIndexOutOfBoundsException/内层try-catch。

内层 catch 块执行完毕后,程序继续执行外层 try 块的剩余代码,抛出 ArithmeticException 异常。

该异常被外层第一个 catch 块(捕获 ArithmeticException)捕获,输出:发生ArithmeticException。

外层第二个 catch 块(捕获 ArrayIndexOutOfBoundsException)不会执行,因为异常已被内层处理且外层抛出的是 ArithmeticException。

运行结果:
text
ArrayIndexOutOfBoundsException/内层try-catch
发生ArithmeticException
说明:
代码中的字符串输出有拼写不一致(如 "ArrayList>OutOfBoundsException"),但根据实际代码逻辑,输出以代码中的字符串为准。

这是一个多层异常捕获的示例,展示了内层 catch 块处理特定异常后,外层继续处理其他异常的过程。

image
image
ArrayIndexOutOfBoundsException/外层try-catch

image
以下是代码的逐步执行过程:
进入Level 1:执行System.out.println("in Level 1")。
进入Level 2:执行System.out.println("in Level 2")。
进入Level 3:执行System.out.println("in Level 3")。
Level 3抛出异常:执行result=100/0,抛出ArithmeticException。
Level 3捕获异常:异常被Level 3的catch块捕获,输出Level 3: class java.lang.ArithmeticException。
执行Level 3的finally:无论是否发生异常,finally块都会执行,输出In Level 3 finally。
Level 2继续执行:由于Level 3的异常被内部捕获,Level 2的try块正常结束,不会触发Level 2的catch块。
执行Level 2的finally:输出In Level 2 finally。
Level 1继续执行:Level 1的try块正常结束,不会触发Level 1的catch块。
执行Level 1的finally:输出In Level 1 finally。
预期输出
根据以上分析,运行代码后的输出结果为:
in Level 1
in Level 2
in Level 3
Level 3: class java.lang.ArithmeticException
In Level 3 finally
In Level 2 finally
In Level 1 finally
关键总结
finally的执行时机:finally块总是在对应的try块退出时执行,无论是否发生异常。在嵌套结构中,finally块从内向外依次执行。
异常处理的影响:如果异常在内部被捕获(如Level 3),则外部try块不会感知异常,后续代码正常执行。如果异常未被内部捕获,它会向外传播,触发外部catch块。
不同异常抛出位置的对比(如图片中强调的):
如果异常在Level 2抛出(取消注释// result=100/0; //Level 2),则Level 3的try块不会执行,输出顺序变为:Level 1 → Level 2 → Level 2异常捕获 → Level 2 finally → Level 1 finally。
如果异常在Level 1抛出(取消注释// result = 100 / 0; //level 1),则Level 2和Level 3都不会执行,输出顺序变为:Level 1 → Level 1异常捕获 → Level 1 finally。

相关新闻

  • 25.11.4随笔联考总结
  • 「CF1210F2-Marek and Matching (hard version)」题解
  • 详细介绍:【数据结构】考研算法精讲:分块查找的深度剖析 | 从“块内无序、块间有序”思想到ASL性能最优解

最新新闻

  • 阿甘|张家界纯玩领队,8年只做一件事:带你好好玩张家界 - 资讯焦点
  • React Page项目结构解析:Facebook官方推荐的React项目组织方式
  • 2026年 310S不锈钢厂家/源头供应商推荐榜:耐高温耐腐蚀性能解析与实力品牌精选 - 企业推荐官【官方】
  • noble-hashes在区块链开发中的应用:以太坊与加密货币场景实践
  • 2026年淮南职业技术学校招生报名全攻略:42个专业任你选,总有一个适合你 - 我叫小周
  • 上海本地地下室防水施工公司权威口碑排名参考 - 热点速览

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号