如果一个方法抛出的异常与它所执行的任务没有明显关联关系的话,会使人感到不知所措。为了避免这个问题,应该在高层的实现中俘获底层抛出的“低级”异常,并同时用另一“高级”异常继续向外抛。
例如,如我们在方法中,有一段循环,一个一个地取集合的一下元素。当catch到一个 NoSuchElementException 或 NullPointerException 时,说明已经到头儿了。这时我们可以 new 一个 IndexOutOfBoundsException 并向上抛出。对于此方法的调用者来说,这个异常显然比前两个更有实际意义。这被称为异常转译。
但是,尽管异常转译比不加选择地传递低层异常的做法有所改进,但是这也不能被滥用。
当然,“高层”的异常也可以是你的自造异常。如一个和文件相关的操作,如果你的设计并不在意文件操作是因何而失败的话。那么你大可以将 FileNotFoundException 和 IOException 等 可能出现的“低层”异常都转化为你自己的 FileOperationException。当然,这还有一个前提,就是对照上一条先判断一下这里出现一个你自己自造的异常是否合适,还是就该使用那些标准的“低层”异常。
【Effective Java 学习笔记】系列连载专题请见:
http://tonylian.iteye.com/categories/64208
分享到:
相关推荐
抽象类、接口、内部类、异常1.抽象类:被abstract修饰的类称为抽象类
“抽象类允许(但不要求)抽象类包含抽象成员”。但是一个抽象类里不写抽象方法就没有意义了,既然如此,还不如直接写个普通类? 在一个抽象类里可以不声明抽象方法,这在语法上是没问题的,但实际来说,这样是没有...
数据云-寻找在云计算上合适的大数据管理抽象层
其他还有很多异常,我就不一一列举了,我要说明的是,一个合格的程序员,需要对程序中常见的问题有相当的了解和相应的解决办法,否则仅仅停留在写程序而不会改程序的话,会极大影响到自己的开发的。关于异常的全部...
抽象成员只能存在于抽象类中 抽象类可以有非抽象成员(侧重族群的概念) 抽象类的子类必须实现抽象方法体 抽象类you构造函数 抽象类只能用作基类,无法实例化(new) 抽象类不能被实例化。 抽象类存在的意义: 1.抽象...
这是一张白色抽象线条幻灯片背景图片。 关键词:蓝白相间线条PowerPoint背景图片,抽象PPT背景图片,.jpg格式;
(3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类 (4) 具体派生类必须覆盖基类的抽象方法 (5) 抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,...
JAVA 为什么要使用抽象类 使用抽象类有什么好处
这是一套蓝色抽象线条背景的,精美商务PPT模板,共22张。 PowerPoint模板封面,使用了一张抽象烟雾线条图片作为背景,配合蓝色黑体文字制作。 幻灯片模板内容页面,使用蓝色扁平化设计,同时使用多种商务建筑、...
java有关抽象类、接口与异常处理的内容
Java抽象类和抽象方法
通过抽象类中的抽象方法实现简单工厂模式。
java设计模式 抽象工厂模式详解 一张图让你彻底明白抽象工厂模式
抽象工厂设计模式抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式
讲述C抽象类与抽象方法的区别,并通过举例详细说明各自的差别
2)异常是专门针对抽象编程中的一系列错误处理的,C++中不能借助函数机制,因为栈结构的本质是先进后出,依次访问,无法进行跳跃,但错误处理的特征却是遇到错误信息就想要转到若干级之上进行重新尝试,如图 ...
[千个精美PPT模版]一共包括:抽象1、抽象2、抽象3、抽象4、抽象5、抽象6、工业、混杂1、混杂2、混杂3、技术1、技术2、家庭、假日、教育、经济货币、科学、商业管理1、商业管理2、虚拟人物1、虚拟人物2、艺术音乐、...
抽象类和抽象方法.pdf
抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。 通过相同与不同的比较,我们只能说接口和抽象类,各有所长,但无优略。在实际的编程实践中,我们要视具体情况来酌情量才,但是以下的...
目中继承于抽象工厂,实现抽象工厂中的方法,取出具体产品,某一件上衣,某一条裤子。 抽象产品:虚拟的衣服,也只是个概念。在项目中可能是多个接口或抽象类,定义规则,有什么特性,起什么作用。 具体产品:具体...