当前位置: 首页 > news >正文

异常(11)

了解了try-catch-finally的执行流程后,那么我们就要来了解异常的处理流程了,理解程序是如何一步步处理异常的,话不多说,来看。

关于"调用栈"

方法之间是存在相互调用关系的,这种调用关系我们可以用"调用栈"来描述,在JVM中有一块内存空间称为“虚拟机栈"专门存储方法之间的调用关系,当代码中发现异常时,我们就可以使用e.printStackTrace();的方式查看出现异常代码的调用栈..

如果本

 

方法中没有合适的处理异常的方式,就会沿着调用栈向上传递

 如果一直向上传递都没有合适的方法处理异常,最终就会交给JVM处理,程序就会异常终止

(跟我们最开始未使用try catch时是一样的)

可以看到,程序已经异常终止了,没有执行到System.out.println("after try catch")这一行.

异常处理流程总结

程序先执行try中的代码

如果try中的代码出现异常,就会结束try中的代码,看和catch中的异常类是否匹配,

如果找到匹配的异常类型,就会执行catch中的代码.

如果没有找到匹配的异常类型,就会将异常向上传递到上层调用者..

无论是否找到匹配的异常类型,finally中的代码都会被执行到(在该方法结束之前执行).

如果上层调用者也没有处理的异常,就继续向上传递.

一直到main方法也没有合适的代码处理异常,就会交给JVM来处理,此时程序异常终止..

好了,今天分享就到这里,谢谢大家!!!

 

相关文章:

  • 解决QT_Debug 调试信息不输出问题
  • Navigation页面导航的使用
  • 无SIM卡时代即将来临?eSIM才是智联未来?
  • ChatBI 的技术演进与实践挑战:衡石科技如何通过 DeepSeek 实现商业落地
  • arthas基础命令
  • Forward Looking Radar Imaging by Truncated Singular Value Decomposition 论文阅读
  • K8S快速部署
  • CSP-J/S冲奖第18天:真题解析
  • Matlab 汽车主动悬架LQR控制器设计与仿真
  • 使用DeepSeek,优化斐波那契数函数,效果相当不错
  • 什么是有限元力学?分而治之,将复杂问题转化为可计算的数学模型
  • 设计模式-适配器模式
  • 【网页】自制流光卡片
  • 【面试手撕】非常规算法,多线程常见手撕题目
  • 【开源免费】基于SpringBoot+Vue.JS智慧生活商城系统(JAVA毕业设计)
  • vue/H5的日历组件可简单定制
  • 【spring boot 实现图片验证码 前后端】
  • STM32微控制器_03_GPIO原理与应用
  • 力扣No.376.摆动序列
  • LightGBM + TA-Lib A股实战进阶:Optuna调优与Plotly可视化详解
  • 再获殊荣!IP SH跻身上海文化品牌全球传播力TOP 6
  • 马上评丨75万采购300元设备,仅仅终止采购还不够
  • 有关部门负责人就《新时代的中国国家安全》白皮书答记者问
  • 马上评丨学术不容“近亲繁殖”
  • 巴基斯坦称成功拦截印度导弹,空军所有资产安全
  • 工行回应两售出金条发现疑似杂质:情况不属实,疑似杂质应为金条售出后的外部附着物