java异常笔记

1:《java核心技术卷一》473页提到:如果在子类中覆盖了超类的一个方法,子类方法中声明的已检查异常不能超过超类方法中声明的异常范围。

显然,如果子类中抛出的异常范围比超类还大。多态将无法进行异常处理(我们永远无法确定需要处理的范围)

2:再次抛出异常与异常链,在catch子句中可以抛出一个异常,这样做的目的是改变异常的类型。如果开发了一个供其他程序员使用的子系统,那么,用于表示子系统故障的异常类型可能会产生多种解释。ServletException就是这样一个异常类型的例子。执行Serlet的代码可能不想知道发生错误的细节原因,但希望明确知道Servlet是否有故障。下面给出捕获异常并将它再次抛出的基本方法:

try{
   //Access to the database
}catch(SQLException e){
  throw new ServletException("Database Error:" + e.getMessage() );
}

这里,ServletException用带有异常信息文本的构造器来构造。在Java SE1.4 中,可以有一种更好的处理方法,并且将原始异常设置为新异常的“诱铒”:

try{
  //Access to the database
}catch(SQLException e){
  Throwable se=new ServletException("Database Error");
  se.initCause(e);
  throw e;
}

当捕获到异常时,就可以使用下面这条语句重新得到原始异常:

Thowable e=se.getCause();

作者还说:强烈地使用这种包装技术。这样子可以让用户抛出子系统中的高级异常,而不会丢失原始异常的细节。

时间: 2024-11-16 14:30:17

java异常笔记的相关文章

Java异常笔记整理

参考书籍:Head First Java 1.假设某方法是别人写在某个类里面的 2.而此时你根本就不知道这个方法是否有风险(比如服务器出故障会使程序受到影响): 3.那最好的方法应该就是,在调用这个类的方法时,加上可能发生异常的处理方案,未雨绸缪. 关键字:try……catch,throws,throw,finally try……catch其实就是给编译器的一个信号,表示你已经注意到了这个异常并开始着手进行应对: 编译器需要程序员try包裹住可能发生异常的代码,再通过catch去处理 Runti

【学习笔记】java异常

异常是程序在执行时发生的事件,它会打断指令的正常流程. Java中提供了一种独特的处理异常的机制,通过异常来处理程序设计中出现的错误. Java异常是一个描述在代码段中发生的异常情况(出错)的对象. 引发异常: 在Java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象.生成的异常对象将传递给Java运行时系统,这一异常的产生和提交过程称为引发异常. 分类: JRE(系统)产生异常对象 人为产生异常对象(明确用throw关键字) 异常处理机制: 两种处理例外的机制: 捕获异常(try

Java学习笔记之异常

//概述 /* 异常: 是在运行时期发生的不正常情况.. 在java中用类的形式对不正常情况进行了描述和封装对象. 描述不正常的情况的类, 就称为异常类. 以前正常流程代码和问题处理代码相结合, 现在将正常流程代码和问题处理代码分离, 提高阅读性. 其实异常就是java通过面向对象的思想将问题封装成了对象. 用异常类对其进行描述. 不同的问题用不同的类进行具体的描述. 问题很多, 意味着描述的类也很多. 将其共性进行向上抽取,形成了异常体系. 最终问题(不正常情况)就分成了两大类 Throwab

Android(java)学习笔记168:Java异常分类

Java异常可分为3种: (1)编译时异常:Java.lang.Exception (2)运行期异常:Java.lang.RuntimeException (3)错误:Java.lang.Error

Java系列笔记(2) - Java RTTI和反射机制

目录 前言 传统的RTTI 反射 反射的实现方式 反射的性能 反射与设计模式 前言 并不是所有的Class都能在编译时明确,因此在某些情况下需要在运行时再发现和确定类型信息(比如:基于构建编程,),这就是RTTI(Runtime Type Information,运行时类型信息). 在java中,有两种RTTI的方式,一种是传统的,即假设在编译时已经知道了所有的类型:还有一种,是利用反射机制,在运行时再尝试确定类型信息. 本文主要讲反射方式实现的RTTI,建议在阅读本文之前,先了解类的加载机制(

Java异常打印输出中常见方法的分析

Java异常是在Java应用中的警报器,在出现异常的情况下,可以帮助我们程序猿们快速定位问题的类型以及位置.但是一般在我们的项目中,由于经验阅历等多方面的原因,依然有若干的童鞋在代码中没有正确的使用异常打印方法,导致在项目的后台日志中,没有收到日志或者日志信息不完整等情况的发生,这些都给项目埋下了若干隐患.本文将深入分析在异常日志打印过程中的若干情况,并给出若干的使用建议. 1. Java异常Exception的结构分析 我们通常所说的Exception主要是继承于Throwable而来,可以参

java学习笔记3——java关键字

java学习笔记3——java关键字 虽然老师说不用刻意的去记忆,但是我还是在网上找到了非常详细的注解,再次收藏 关键字的类型表: 各个关键字的详细注解和实例,按首字母排序: 1.abstract abstract 关键字可以修改类或方法. abstract 类可以扩展(增加子类),但不能直接实例化. abstract 方法不在声明它的类中实现,但必须在某个子类中重写. -示例- public abstract class MyClass{ } public abstract String my

【java读书笔记】——java的异常处理

程序在实际环境的运行过程中,安全成为需要首先考虑的重要因素之一,这也是用户和程序员最关心的问题.同时,Java语言健壮性也体现在了能够及时有效地处理程序中的错误,准确的说是Java的异常处理机制为解决安全问题提交了一份满意的答卷. 先从整体上看一下本文要介绍的内容,然后进行详细的分析: 1.异常的概念 异常又称为例外,是特殊的运行错误对象,对应着Java语言特定的运行错误处理机制. 上面的概念是书本上说的,下面我谈一下自己的看法 其实异常处理机制提供了统一的机制来识别和响应程序错误,异常可以为我

java学习笔记16--异常

java学习笔记16--异常 异常 异常时导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失, 所以在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序正常的执行. 异常类的继承结构 在整个java的异常结构中,实际上有以下两个最常用的类:Exception.Error,这两个类全都是Throwable的子类 Exception:一般表示的是程序中出现的问题,可以直接使用try...catch处理. Error:一般指