2022-07-29第十组薛雯匀
Java学习笔记
异常处理
- 下标越界
- 空指针
3.类型转换异常
3.数字格式化
4.算数异常(数学异常)
编程界:
1.除数为0
2.IO流,没有关闭
3.停电
当一个程序抛出异常时,抛出异常后面的语句不再执行,类似于return功能。
异常的继承体系结构:
- 最顶级的叫Throwable:包括错误和异常
Error:正常情况下,不太可能出现的。绝大多数Error都会导致程序处于一个非正常状态,很难恢复。外力的作用下,不考虑。
Error是Throwable的子类,她是在我们Java程序处理范围之外的。
Exception:Java语言中,将程序执行中发生的不正常的情况称之为异常。
编译器异常:写代码的时候抛异常。如果编译器不解决,会编译不通过,一直报错。
运行期异常:RuntimeException,运行时抛异常,平时没事
自定义异常:
Java中异常机制,但是结合实际业务。
怎么自定义异常?
- 所有的异常必须是Throwable的子类(大材小用,没必要)
- 如果要定义一个编译期异常,需要继承Exception类
- 如果要定义一个运行期异常,需要继承RuntimeException类
在一个语句块中,如果使用throw抛出一个编译期异常,就必须在方法的声明处使用throw关键字来标记异常
还有一种处理方式,就是直接try。。。catch
我们为什么要手动抛异常,因为要配合全局异常处理机制去解决问题
Throw语句是可以当做方法的返回值的。
在一个有返回值的方法中,如果有条件分支,一定要保证每种情况都有返回值,哪怕是抛异常。
自定义异常类:
错误码通常是我们自己定义的规则:
101:成功
101-:失败
。。。。。。。。。
开发中,大部分情况下使用的都是运行期异常。
异常链:
一个异常被抛出去之后继续被调用这个方法的方法捕获或抛出,异常会扩散
只要说解决异常,处理异常就是try。。。catch
如果一个方法没有捕获一个编译期异常,该方法必须使用Throws来声明
Throws并不是真正的解决了异常,只是把异常抛给了下一级调用者
面试题:
throws和throw区别!!!
throws出现在什么地方?
方法的声明处,抛出多个异常,用逗号隔开
finally关键字:
finally用来创建在try代码块后面执行的代码块、
无论是否发生异常,finally代码块中的代码一定会执行。Finally一般是最后执行的
try。。。。catch执行顺序:
catch可以写多个但是有顺序问题,先写小的再写大的
方法的重写
重写的方法不能抛出比被重写方法更大的异常
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现