




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 Logger.getLogger(getClass(.error(e.getMessage,e;这种输出异常的方式一般只适用于开发人员认为此异常不应该暴露给上层的情况,而对于其他的则不应该使用此处理方式。u 将异常处理后重新抛出trycatch(IOException efound = false;throw e;u 将异常转换成其他受查异常重新抛出trytestException(; catch (LoadPluginClassException ee.printStackTrace(;private static void testException( throws LoadPlugin
2、ClassExceptiontry catch (ClassNotFoundException ethrow new LoadPluginClassException("PluginClass not found"运行结果:com.LoadPluginClassException: PluginClass not found从打印出的异常堆栈中看不到到底是加载Class1的时候发生异常还是加载Class2的时候发生异常。这种无法定位到异常源头的处理方式无论是对开发人员还是对正式运行的系统来说都是很恼火的事情。为什么在异常堆栈中看不到在哪里抛出的ClassNotFoundEx
3、ception 呢?因为在Java看来这个LoadPluginClassException是从它被throw的位置抛出的,发生系统异常的地方也就是在这个地方。为了能让Java把原始的异常也打印出来,可以将原始异常做为根异常传递给新抛出的异常即可。trytestException(; catch (LoadPluginClassException ee.printStackTrace(;private static void testException( throws LoadPluginClassExceptiontry catch (ClassNotFoundException ethrow
4、 new LoadPluginClassException("PluginClass not found",e;运行结果:com.LoadPluginClassException: PluginClass not found. 1 more对原始异常进行包装,无论异常抛到哪里,我们都能清晰的看到异常的源头。u 将异常转化为非受查异常抛出与C#、Delphi等语言不同,Java在异常处理方面更加严谨,Java的受查异常要求开发人员必须处理。这在增强了系统的逻辑正确性的同时,也使得代码异常复杂,到处充满着异常抛出、异常声明、异常捕获的代码。开发人员对于自己无法处理的异常有两种方
5、式,一种懒人是直接吃掉异常,另一种追求严谨的开发人员会把异常继续向上抛出,比如:private static void fooBar( throws InstantiationException,IllegalAccessException, ClassNotFoundExceptionint i = Integer.parseInt(obj.toString(;这么一个简单的方法竟然抛出如此多的异常,而且调用者也许也不明白为什么这个方法要抛出ClassNotFoundException,所以调用者也继续向上抛,代码中就充斥着大量的异常声明。越来越多的人发现过多的使用受查异常给代码带来的坏处,
6、所以非受查异常也逐渐被越来越多的人接受,最突出的就是在Spring提供的一些JDBC、ORM等框架中很多地方使用了非受查异常,这样应用程序对其关心的非受查异常可以有选择的进行捕获处理。案例系统中提供了一个将受查异常转换为通用非受查异常的方法:即定义public static CTKRunTimeException toRuntimeException(Throwable eCTKRunTimeException re = new CTKRunTimeException(e;re.setStackTrace(e.getStackTrace(;return re;其中CTKRunTimeException 类的定义如下:public class CTKRunTimeException extends RuntimeExceptionpublic CTKRunTimeException(Throwable causesuper(cause;使用示例:tryint i= Integer.parseInt(“123”;catch(NumberFormatException fethrow ExceptionUtils.toRuntimeException(fe;转化为非受查异常的这种方式不能滥用,应该有选择的使用,这种方式一般适用于一下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防洪提勘察设计合同范本
- 狗子领养合同协议书范本
- 美容店长工资合同协议书
- 求合作协议需要几份合同
- 签了补充协议没签主合同
- 首付房屋转让协议书范本
- 电工安全施工合同协议书
- 能效管理合同协议书范本
- 法院判决房屋赔偿协议书
- 生产质量安全协议书范本
- 热电厂2空预器大修施工方案
- 十二岁套面圈的顺口溜大全
- 中国儿童严重过敏反应诊断与治疗建议(2022年)解读
- 卡吉斯铸铁锅炉
- 钢箱拱钢箱梁吊装施工方案
- GB/T 23821-2022机械安全防止上下肢触及危险区的安全距离
- GB/T 25980-2010道路车辆旅居挂车和轻型挂车的连接球尺寸
- GB/T 24218.1-2009纺织品非织造布试验方法第1部分:单位面积质量的测定
- GB/T 1633-2000热塑性塑料维卡软化温度(VST)的测定
- 手术讲解模板:肩关节全部置换术课件
- 食堂伙食收据样稿
评论
0/150
提交评论