e.printStackTrace();这条语句如果程序中用的比较多的话,那就说明你是个吞异常的高手。然而很遗憾, 成为了吞异常的高手,就一定是一个处理异常的低手(这个词太别扭了,改用'菜鸟'吧)!如果把不该吞的异常也给吞了,那就降低了程序和用户(包括二次开发 人员、测试人员以及普通用户)之间的交互性。
程序如果在出错的时候总是保持沉默,那用户不爽的次数到达一定数量后,最终将极有可能把我们所谓的作品给抛 弃。异常处理的重要性已经体现出来了,要不然SUN公司也不会专门搞个异常处理机制了。
说到这里,真正需要思考的问题才刚刚开始,如何才能更好地或者说更 为合理地进行异常的处理呢?要想成为异常处理的高手,首先肯定得了解产生异常的原因,然后根据原因进行相应处理。究竟是抛,还是不抛(或者说'吞'),这 是一个问题;究竟是使用默认异常还是自定义异常,这同样也是一个问题。如果异常是系统内部引起并且是我们能够确定的,比如说一个字符串s在使用 getBytes("UTF-8")时出现UnsupportedEncodingException异常,那么就可以把它吞了(或者抛出一个 Error),因为UTF-8是系统支持的基本编码集之一;如果异常是我们无法确定的,那此时就应该向上抛出,比如我们在写一个底层函数,需要进行文件的 读写操作,那么很显然会有一个FileNotFoundException异常,这时就应该抛出去;但是如果我们站在更上一层,能够直接面向用户了,这时 就得进行异常处理,比如来个信息提示说相应的文件没找到。
接着说说自定义异常给我们带来的好处。自定义异常的好处个人认为主要有两点:一是能够更好的进行 异常定位;二是能够将同种性质或是类似性质的异常进行归类,向上抛出后方便别人处理。比如给别人提供了一个二次开发函数,作用是读取一个Xml格式的文 件,并且通过一系列解密操作,得到原始信息,然后通过这些信息进行相关类的构造。既然是读取文件,那么必然会有一个 FileNotFoundException异常,又由于是一个经过加密的xml文件,那么在读取操作时也很有可能会产生诸如xml文件格式不正确、 xml节点错误、xml节点内容错误等各种异常情况。对于二次开发人员来说FileNotFoundException异常很方便处理,但后面的几种异常 可能会使他产生厌烦。此时,我们就应该使用自定义异常将xml文件格式不正确、xml节点错误、xml节点内容错误等各种异常归并起来,然后向上抛出。于 是对于二次开发人员来说,他只需要处理两个异常,一个是FileNotFoundException,另一个则是我们自定义的异常,比如 FileContentInvalidException(文件内容无效)异常。因为产生文件内容无效的原因,多半是由于正确产生出的xml文件被非法修 改过所造成的。当然了,自定义异常的名称最好也能够见名知意!
个人观点:在适当的时候抛出包装了的异常,会给人带来更大的人机交互功能,也能让人觉得所写的代码不再死板,而是一个貌似有血有肉的活物。这样的程序不仅客户看着舒服,自己也会觉得很爽。
分享到:
相关推荐
《应用地磁学》实验报告 姓 名:10101213班 第四组 学 号:10101213 指导教师:李淑玲 实验地点:教五楼319 实验日期:2015年5月 小组成
磁异常的转换与处理是磁力勘探解译重要的一个组成部分
springboot 全局异常处理.捕捉全局异常,转换格式,以友好方式提示客户正确的操作步骤. 避免系统错误出现在用户勉强,造成不良使用体验.
2. 两个加数分别输入2和3,...5. 两个加数分别输入123和0,调试并修改程序,尝试用finally处理该异常。 6. 定义一个自己的异常MyException,并在TxtOp1或者TxtOp2为空的时候,抛出该异常。利用catch语句将该异常捕捉。
- 当代码执行过程中出现如除数为零的`ArithmeticException`等错误时,Java会立即转至相应的catch块进行异常处理,如输出错误信息并打印堆栈跟踪。 2. **finally块的使用**: - 不论try块中的代码是否抛出异常,...
企业库 异常处理 企业库 异常处理 配置文件 如何 转换错误,给以用户友好的异常机制
要求:有简单的需求分析,功能设计,详细设计(程序流程),异常处理,测试,源程序清单,总结,具体格式见附件。 知识点: 掌握 图形用户界面设计; 掌握基本类的设计与使用; 掌握事件处理机制; 掌握使用异常...
ClassCastException 强制转换类失败异常 ...NumberFormatException 把字符串转成数字失败时出现的数字格式异常 AssertionError 断言错误 ExceptionInInitializerError 试图初始化静态变量或者静态初始化块时抛出
内存出现异常的几种故障及其处理方法
一个扩展php内置的异常处理类,在try代码块中,需要使用throw语句抛出一个异常对象,才能跳到转到catch代码块中执行,并在catch代码块中捕获并使用这个异常类的对象。虽然在PHP中提供的内置异常处理类Exception,...
C++异常处理的编程方法,网上很好的一个关于异常处理的资源,原来的是DOC的,看起来很难受,里面个格式很乱,doc里面看起来很难受,稍微整理了一下,转成了PDF,阅读起来舒服多了
一个扩展php内置的异常处理类,在try代码块中,需要使用throw语句抛出一个异常对象,才能跳到转到catch代码块中执行,并在catch代码块中捕获并使用这个异常类的对象。虽然在PHP中提供的内置异常处理类Exception,...
方法的流程控制与异常处理 (1) 编写Java应用程序,求1!+2!+...+20!的和并显示,要求用方法实现求阶乘。 (2) 编写Java应用程序,从键盘输入一个整数,将其转换为的二进制、十六进制并把相应的表示输出到屏幕上。 (3) ...
中断有很多类,可能是外部硬件触发,也可能是由软件触发,对于CPU来说,中断处理的过程都是一样的:中断现行程序,转到中断服务程序处执行,回到被中断的程序继续执行。CPU总共可以处理256种中断。CPU对于其它的模块...
Struts2处理类型转换错误,全局处理,如处理时间转换错误
如何用java实现不同编码方式字符串的转换(包含异常处理、重复不终止输入、缓冲区bufferedreader的使用)
项目中出现的异常通常要用一个友好的异常页面来显示,通过对struts2.xml的配置能拦截全局异常,只要出现异常就会转向异常页面。
模拟请求页式存储管理中硬件的地址转换和缺页中断处理
Java异常与错误处理的中英文翻译,供新手查阅