打字猴:1.700448541e+09
1700448541 编写高质量代码:改善Java程序的151个建议 [:1700438183]
1700448542 编写高质量代码:改善Java程序的151个建议 第8章 异常
1700448543
1700448544 大成若缺,其用不弊。
1700448545
1700448546 大盈若冲,其用不穷。
1700448547
1700448548 ——老子《道德经》
1700448549
1700448550 不管人类的思维有多么缜密,也存在“智者千虑必有一失”的缺憾。无论计算机技术怎么发展,也不可能穷尽所有的情景—这个世界是不完美的,是有缺陷的,完美的世界只存在于理想中。
1700448551
1700448552 对于软件帝国的缔造者来说,程序也是不完美的,异常情况随时都会出现,我们需要它为我们描述例外事件,需要它处理非预期的情景,需要它帮我们建立“完美世界”。
1700448553
1700448554
1700448555
1700448556
1700448557 编写高质量代码:改善Java程序的151个建议 [:1700438184]
1700448558 编写高质量代码:改善Java程序的151个建议 建议110:提倡异常封装
1700448559
1700448560 Java语言的异常处理机制可以确保程序的健壮性,提高系统的可用率,但是Java API提供的异常都是比较低级的(这里的低级是指“低级别”的异常),只有开发人员才能看得懂,才明白发生了什么问题。而对于终端用户来说,这些异常基本上就是天书,与业务无关,是纯计算机语言的描述,那该怎么办?这就需要我们对异常进行封装了。异常封装有三方面的优点:
1700448561
1700448562 (1)提高系统的友好性
1700448563
1700448564 例如,打开一个文件,如果文件不存在,则会报FileNotFoundException异常,如果该方法的编写者不做任何处理,直接抛到上层,则会降低系统的友好性,代码如下所示:
1700448565
1700448566 public static void doStuff()throws Exception{
1700448567
1700448568 InputStream is=new FileInputStream(“无效文件.txt”);
1700448569
1700448570 /*文件操作*/
1700448571
1700448572 }
1700448573
1700448574 此时doStuff方法的友好性极差:出现异常时(比如文件不存在),该方法会直接把FileNotFoundException异常抛出到上层应用中(或者是最终用户),而上层应用(或用户)要么自己处理,要么接着抛,最终的结果就是让用户面对着“天书”式的文字发呆,用户不知道这是什么问题,只是知道系统告诉他“哦,我出错了,什么错误?你自己看着办吧”。
1700448575
1700448576 解决办法就封装异常,可以把异常的阅读者分为两类:开发人员和用户。开发人员查找问题,需要打印出堆栈信息,而用户则需要了解具体的业务原因,比如文件太大、不能同时编写文件等,代码如下:
1700448577
1700448578 public static void doStuff2()throws MyBussinessException{
1700448579
1700448580 try{
1700448581
1700448582 InputStream is=new FileInputStream(“无效文件.txt”);
1700448583
1700448584 }catch(FileNotFoundException e){
1700448585
1700448586 //为方便开发和维护人员而设置的异常信息
1700448587
1700448588 e.printStackTrace();
1700448589
1700448590 //抛出业务异常
[ 上一页 ]  [ :1.700448541e+09 ]  [ 下一页 ]