JAVA 异常 基本知识
2024-10-19 16:30:23
异常
异常定义
异常是运行过程中出现的错误
- 人为错误:填写错误等
- 随机错误:网络中断、内存耗尽等
一个健壮的程序必须处理各种各样的错误
Java的异常是class
Object
Throwable
Error
- OutOfMemoryError
Exception
RuntimeException
- NullPoiterException
- IllegalArgumentException
IOException
继承关系图
捕获要求
- Error 及其子类,RuntimeException及其子类不需要捕获
- Exception及其子类,不包括RuntimeException及其子类
必须捕获
异常捕获
try、catch、finally
try中一般放置可能发生异常的语句
catch 捕获异常
多catch则按顺序匹配
- 匹配到了则不再继续匹配
可以捕获子类异常
一个catch可以捕获多个异常,用”|“合并到一起
finally
- 不论是否发生异常都会执行的代码
- 不是必须的
- 总是最后执行
抛出异常
异常的传播
追踪
- printStackTrace()方法可以打印出调用堆栈
异常的转换
抛出过程中转换了异常类型
- 用旧异常构建了一个新异常然后抛出
printStackTrace的时候 关键字为Caused by
- 用旧异常构建了一个新异常然后抛出
try、catch、filnally
一般正常情况,再try中抛出异常,catch捕获异常,final运行保底代码
如果catch中抛出的异常,会在final运行完毕后抛出
异常屏蔽,如果final也抛出异常,将会屏蔽掉catch中的异常
- 解决方法,使用Trrowable的
addSupressed()方法。保留被屏蔽的异常信息。
在捕获处是同getSuppressed()方法获取被屏蔽的异常信息
printStackTrace的时候 关键字为Suppressed
- 解决方法,使用Trrowable的
NullPointerException
最常见的异常
空指针异常
由JVM抛出
如果一个对象为null,调用其方法或访问其字段就会产生
一般避免返回null
- 字符串使用”“,而不是null
- 数组返回空数组,而不是null
如果调用方一定要根据null判断,比如返回null表示文件不存在,那么考虑返回Optional
从Java 14开始,如果产生了NullPointerException,JVM可以给出详细的信息告诉我们null对象到底是谁。
小结
自定义异常
在一个大型项目中,可以自定义新的异常类型,但是,保持一个合理的异常继承体系是非常重要的。
一个常见的做法是自定义一个BaseException作为“根异常”,然后,派生出各种业务类型的异常。
完整思维导图
参考
www.liaoxuefeng.com
最新文章
- shell条件判断中-a至-z的含义
- n皇后2种解题思路与代码-Java与C++实现
- Eclipse下编写的web项目部署到tomcat下
- Populating Display Item Value On Query In Oracle Forms
- DEDECMS如何修改数据库密码以及忘记了后台密码怎么办
- Spring零碎知识复习
- iOSApp -Monkey测试
- 【原创】LoadRunner Java Vuser开发环境配置指南
- 多备份CEO胡茂华:创业路上的五道坎
- QtXlsxWriter
- collection系列用法-deque双向队列
- iOS SDWEBImage和collectionView的组合,以及collectionView的随意间距设置
- 轻量级代码生成器-OnlyCoder 第二篇
- LINUX 笔记-ps命令
- 最简单的基于DirectShow的示例:获取Filter信息
- Git 本地保存账号密码的删除或修改
- javascript实现游戏贪吃蛇
- Java并发编程(八)-- 死锁
- 213. House Robber II(动态规划)
- 用C#学习数据结构之线性表
热门文章
- Python raise...from... 是啥?
- 取地址与解引用 C指针浅析
- python---导入模块和包
- 不用关闭重启cad及不用更改快捷方式或者版本号c#调试cad插件
- Java基础语法01——变量与运算符
- C++五子棋(三)——判断鼠标有效点击
- 如何使用 python 爬取酷我在线音乐
- 2021.08.05 P5357 康托展开模板(康托展开)
- 2021.08.01 P3377 左偏树模板
- DOM 对象的重点核心