这里是修真院后端小课堂,每篇分享文从
【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】
八个方面深度解析后端知识/技能,本篇分享的是:
【java的异常处理 】
大家好,我是IT修真院上海分院第2期的学员蒋新益,一枚正直纯洁善良的JAVA程序员
今天给大家分享一下,修真院官网JAVA任务一,深度思考中的知识点——java的异常处理
1.背景介绍
程序就跟人一样,同样会生病,不过人类的身体有免疫体统,程序生病了靠什么解决呢
这里我们就要引入一个概念,程序的健壮性(又称鲁棒性,英文为Robust)
如果一个人很健壮,那么他在遇到一些小毛病的时候,比如感冒,能够很快恢复,而不至于遇到感冒就倒掉了 对比过来,若果一个程序很健壮,那么他在遇到感冒的时候(比如打开的文件不存在),也能够很快恢复(处理异常情况,输出错误信息等),然后继续运行下,而不至于一碰到感冒就狗带了
如果一个人很健壮,那么他在遇到一些小毛病的时候,比如感冒,能够很快恢复,而不至于遇到感冒就倒掉了 对比过来,若果一个程序很健壮,那么他在遇到感冒的时候(比如打开的文件不存在),也能够很快恢复(处理异常情况,输出错误信息等),然后继续运行下,而不至于一碰到感冒就狗带了.
2.知识剖析
调用有风险的方法时会发生什么?
假如你调用了一个不是自己写的方法,且该方法可能在运行的时候会有某些风险,你必须认识到该方法是有风险的,并且写出在发生状况是加以处理的程序代码
编译器需要确定你了解所调用的方法是有风险的
有两种方式可以满足编译器的有风险方法调用
即处理和声明
处理
把有风险的调用包在try/catch块里面
声明(duck掉)
把methed声明成跟有风险的调用一样会抛出相同的异常
异常是一种Exception类型的对象
编译器会核对每件事,除了RuntimeExceptions.编译器保证
1.如果你有抛出异常,则你一定要使用throw来声明这件事
2.如果调用会抛异常的方法,你必须得确认你知道异常的可能性
3.常见问题
为什么编译器不管那些运行期间的异常
4.解决方案
大部分的RuntimeException都是因为程序逻辑的问题,而不是以你所无法预测或防止的方法出现的执行期时报情况
5.编码实战
java的异常处理_腾讯视频
6.扩展思考
假如同时抛出多个异常,先后顺序怎么排
7.参考文献
参考一:博客
参考二:Head First Java
8.更多讨论