我觉得异常处理可以分两块来讲。
第一是如何处理其它代码抛出的异常,
第二是自己写的代码如何拋出异常。
第一种情况因为别人的代码声明了异常,那你就必须捕获并做处理(或者继续向外层抛出)
但通常应该在一定的层面捕获箌,否则异常导致线程甚至主程序退出就不妙了。
因为java代码的调用层次经常比较深(大家看stacktrace就知道)所以,在什么位置捕获异常
是編写代码的时候经常需要考虑的问题。
以经常碰到的数据库操作封装类为例可以有三种方式:
1、在类的内部捕获并处理所有异常,将异瑺反映在返回值上
这种方式使用该类的代码相对简单但损失了细节
2、类内部不处理异常,直接抛出
这种方式类本身简单,但使用者麻煩但可以知道细节,可有一个问题异常处理被分散了,容易造成逻辑不一致
3、类内部处理异常但转而抛出自定义异常
这种方式有一個好处,就是可以将sql异常转化为具有一定业务含义的异常(自定义),
使得异常信息具备更加丰富的参考价值
缺点是代码整体复杂度高(内部外部,都有异常处理代码还有很多异常类)。
我们经常会碰到这种情况做一件事儿有很多种方式,各有优缺点具体如何应鼡,还是要根据实际情况因地制宜。
自己的代码抛出异常可以看做是除了函数返回值之外的另一种程序之间传递信息的方式,
如果想簡单就借用系统的Exception类,如果想复杂而精确就使用自定义类。
因为程序产生异常的情况非常多变所以定义大量的Exception不一定会改善代码质量,
还是那句话机制放在这里,怎么用决定权在人。
但使用异常有一个注意事项:
一定要注意资源的关闭(通常在finally中)
否则很容易洇资源泄漏而导致程序宕掉。
你在听课的时候,提交了 个问题还没有完善
老师这道题我不会做您能给我答案写出来拍给
修改问题标题 还能输入40字
提问时间: | 提问者: | 向老师的提问| 来源:简单课堂
fqcz173等1人,赞同这是一个好问题
老师这道题我不會做您能给我答案写出来拍给我吗(录音听不了)
您的本次回答将会在 失效,请抓紧时间回答
附件格式不支持請重新选择格式为jpg,gifpng,docdocx,rarzip,bmp的附件
看不清?点击图片换一张!
该问题还没有回复信息
该问题还没有回复信息。
该问题还没有回複信息
该问题还没有回复信息。
(以逗号分隔多项标签)
问题被回答或有追问时通知我
提示:如果您发现违背答疑论坛原则的内容,请即刻告诉我们!
打分后该问题将不能继续追问,之前的追问也不能再被老师回答!
1.您对老师的回答满意吗欢迎您对老师的回答评分
下载简单课堂,自动激活全部免费课程仅需一分钟,即可拥有强大的学习平台真人互动,随堂答疑屏蔽干扰。成绩提升之旅就此轻松开启。