jsp/servlet/jsf--java异常框架设计

来源:互联网 发布:数控编程要学多久 编辑:程序博客网 时间:2024/05/18 02:52

当在一个方法中发生错误的时候,这个方法创建一个对象,并且把它传递给运行时系统。这个对象被叫做异常对象,它包含了有关错误的信息,这些信息包括错误的类型和在程序发生错误时的状态。创建一个错误对象并把它传递给运行时系统被叫做抛出异常。

运行时系统搜寻包含能够处理异常的代码块的方法所请求的堆栈。这个代码块叫做异常处理器,搜寻首先从发生的方法开始,然后依次按着调用方法的倒序检索调用堆栈。当找到一个相应的处理器时,运行时系统就把异常传递给这个处理器。一个异常处理器要适当地考滤抛出的异常对象的类型和异常处理器所处理的异常的类型是否匹配。异常被捕获以后,异常处理器关闭。如果运行时系统搜寻了这个方法的所有的调用堆栈,而没有找到相应的异常处理器。

任何的异常都是throwable类(为何不是接口??),并且在它之下包含两个字类error / exception,而error仅在当在java虚拟机中发生动态连接失败或其它的定位失败的时候,java虚拟机抛出一个error对象。典型的简易程序不捕获或抛出errors对象,你可能永远不会遇到需要实例化error的应用,那就让我们关心一下exception

exception中比较重要的就是runtimeexception-运行时异常(当然这个名字是存在争议的,因为任何的异常都只会发生在运行时),为什么说这个类时很重要的呢?因为它直接关系到你的异常框架的设计,仔细看runtimeexception

-可能在执行方法期间抛出但未被捕获的 runtimeexception 的任何子类都无需在 throws 子句中进行声明。 

那就有人会问,那我该关心什么!答案就是除了error与runtimeexception,其他剩下的异常都是你需要关心的,而这些异常类统称为checked exception,至于error与runtimeexception则被统称为unchecked exception.

异常的概念就这些了,即使你在网络上搜索也就不过如此,是不是感觉到有点清晰又有点模糊?那么怎么该如何在这样单薄而模糊的概念下设计j2ee的异常框架呢?

我们拿一个模拟的例子来说明异常框架的设计过程,比如我们要对外提供dobusiness()这个业务方法

当客户端调用这样的方法的时候应该这样处理异常(包括处理runtimeexception , checked exception)

我们暂时将struts中的某个action看作时客户端,其中doexecute(....)要调用dobusiness()这个方法

    // 将异常通知给某个负责此程序的程序员,让他知道他

而"聪明"的读者肯定要问我那dobusiness()这个业务方法该如何包装异常呢?

 2。应用开发中产生的异常都应该集成自exception 但都属于checked excpetion类型

 4。从责任这个角度看error属于jvm需要负担的责任;runtimeexception是程序应该负担的责任;checked exception 是具体应用负担的责任
原创粉丝点击