Java异常 Exception
概念
程序所发生的错误
分类
- 编译时异常:编译期间,某段代码发生问题,需要提前给出解决方案,否则编译不通过;
- 运行时异常:编译通过,运行出错
体系结构
Throwable:
Error:严重性错误
Exception:
RuntimeException: 运行时异常
!RuntimeException: 编译时异常
异常产生的原理
- Java对异常的默认处理方式,是将问题抛给上一级调用者;
- 抛出之前,java会根据错误产生的异常类,创建出该类的对象,底层通过throw关键字将异常抛给上一级,不断向上抛出,直到抛给JVM虚拟机,虚拟机拿到问题对象后,将错误的原因和位置打印在控制台
异常处理的方式
- 问题可以自己处理的:
- Try catch:不会影响后续代码执行
- 问题自己处理不掉的
- Throws抛出方式:
- Throw抛出异常给上一级调用者;此时必须在方法上用throws+异常类名来声明该方法存在异常;
- 如果抛出的是runtimeException则不需声明
- Throws抛出方式:
问题扩展
- Spring框架的事务默认是runtimeException才进行回滚
解决办法:@Transactional(rollbackFor=(Exception.class))
自定义异常
- 利用throw抛出自定义异常;目的是规范的异常类名,根据异常类名可分析出问题原因
- 找一个类,继承Exception或者runtimeException即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)