概念
什么是异常?
异常(exception)应该是异常事件(exceptional event)的缩写。
异常定义:异常是一个在程序执行期间发生的事件,它中断正在执行的程序的正常的指令流。
当在一个方法中发生错误的时候,这个方法创建一个对象,并且把它传递给运行时系统。这个对象被叫做异常对象,它包含了有关错误的信息,这些信息包括错误的类型和在程序发生错误时的状态。创建一个错误对象并把它传递给运行时系统被叫做抛出异常。
一个方法抛出异常后,运行时系统就会试着查找一些方法来处理它。这些处理异常的可能的方法的集合是被整理在一起的方法列表,这些方法能够被发生错误的方法调用。这个方法列表被叫做堆栈调用(call stack)
运行时系统搜寻包含能够处理异常的代码块的方法所请求的堆栈。这个代码块叫做异常处理器,搜寻首先从发生的方法开始,然后依次按着调用方法的倒序检索调用堆栈。当找到一个相应的处理器时,运行时系统就把异常传递给这个处理器。一个异常处理器要适当地考滤抛出的异常对象的类型和异常处理器所处理的异常的类型是否匹配。异常被捕获以后,异常处理器关闭。如果运行时系统搜寻了这个方法的所有的调用堆栈,而没有找到相应的异常处理器。
怎么设计异常框架
任何的异常都是Throwable类,并且在它之下包含两个字类Error / Exception,而Error仅在当在Java虚拟机中发生动态连接失败或其它的定位失败的时候,Java虚拟机抛出一个Error对象。典型的简易程序不捕获或抛出Errors对象,你可能永远不会遇到需要实例化Error的应用,那就让我们关心一下Exception
Exception中比较重要的就是RuntimeException-运行时异常(当然这个名字是存在争议的,因为任何的异常都只会发生在运行时),为什么说这个类时很重要的呢?因为它直接关系到你的异常框架的设计,仔细看RuntimeException
A method is not required to declare in its throws clause any subclasses of RuntimeException that might be thrown during the execution of the method but not caught.
-可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。
也就是说你的应用应该不去“关心”(说不关心是不服责任的,但只是你不应该试图实例化它的字类)RuntimeException,就如同你不应该关心 Error的产生与处理一样!RuntimeException描述的是程序的错误引起来的,因该由程序负担这个责任!(<B>从责任这个角度看Error属于JVM需要负担的责任;RuntimeException是程序应该负担的责任;checked exception 是具体应用负担的责任</B>)
那就有人会问,那我该关心什么!答案就是除了Error与 RuntimeException,其他剩下的异常都是你需要关心的,而这些异常类统称为Checked Exception,至于Error与RuntimeException则被统称为Unchecked Exception.
异常的概念就这些了,即使你在网络上搜索也就不过如此,是不是感觉到有点清晰又有点模糊?那么怎么该如何在这样单薄而模糊的概念下设计J2EE的异常框架呢?
解决方案:J2EE异常框架
我们拿一个模拟的例子来说明异常框架的设计过程,比如我们要对外提供doBusiness()这个业务方法
public void doBusiness() throws xxxBusinessException
当客户端调用这样的方法的时候应该这样处理异常(包括处理RuntimeException , checked exception)
记住,无论如何我们都不希望或者确切的说是不应该将RuntimeException这样的异常暴露给客户的,因为他们没有解决这个问题的责任!
我们暂时将Struts中的某个Action看作时客户端,其中doExecute(....)要调用doBusiness()这个方法
public void doAction(......)
{
try
{
xxx.doBusiness();
}
catch(Exception e)
{
if(e instanceof RuntimeException)
{
// catch runtime exception
// 你可以在这里将捕获到的RuntimeException
// 将异常通知给某个负责此程序的程序员,让他知道他
// 自己犯了多么低级的错误!
分享到:
相关推荐
Java 异常的基本概念和语法开始,讲述 Java 异常处理的基本知识,分析 Java 异常体系结构,对比 Spring 的异常处理框架,阐述异常处理的基本原则,并提出了自己处理一个大型应用系统异常的思想,并通过设计一个异常...
Java异常框架是Java编程语言中处理程序运行时错误和异常的核心机制。在Java中,异常是一种特殊的对象,用于表示程序运行过程中的不正常状态。Java的异常处理模型基于\"异常处理块\",包括try、catch、finally和throw...
总结来说,Java异常框架处理涉及的知识点包括异常类的层次结构、运行时异常与检查型异常的区别、异常处理结构(try-catch-finally)、自定义异常的设计与使用、第三方库异常的处理以及异常处理关键字的使用。...
Java 语言在设计的当初就考虑到异常处理的框架的方案,使得所有的异常都可以用一个类型来表示,不同类型的异常对应不同的子类异常。Java 异常机制的基础知识包括异常的基础概念、异常的分类、异常的对象、异常的来源...
【JAVA-CS快速开发框架设计文档】是一份详细指导JAVA开发者在无IDE环境下构建高效开发框架的资料,旨在帮助程序员在不依赖特定集成开发环境的情况下,实现界面设计与事件代码的动态开发。这份文档可能涵盖了从基础...
理解异常的分类和处理机制,结合适当的框架设计,可以构建出高效且易于维护的异常处理系统。在编写代码时,应尽量预见并预防可能出现的异常,使用合适的异常类型,避免过于宽泛的catch块,以及充分利用finally块进行...
总的来说,Java平台的统一异常框架设计旨在提供一个健壮、稳定且易于使用的异常处理机制,它通过异常的层次结构、国际化和拦截器,有效地管理和呈现应用程序可能出现的各种异常情况,提高了系统的可维护性和用户体验...
2. **Struts框架**:Struts是基于MVC(Model-View-Controller)设计模式的Java Web应用框架,用于处理用户请求和业务逻辑。在SSH整合中,Struts主要负责接收HTTP请求,转发到相应的Action,然后调用Service层处理...
最后,Struts是基于MVC(Model-View-Controller)设计模式的Java Web框架,用于组织和控制应用的业务逻辑。Struts 2框架整合了其他开源项目,如FreeMarker和Tiles,提供了更丰富的视图渲染能力。通过Action、...
"基于AOP的Java异常处理框架和工具的分析与设计" 本文主要探讨了基于AOP(Aspect-Oriented Programming,面向方面编程)的Java异常处理框架和工具的分析与设计。 异常处理机制是当前软件系统的重要组成部分,被大...
3. **依赖注入(DI)与控制反转(IoC)**:这是Java框架中常见的设计原则,通过容器管理对象间的依赖关系,解耦组件,提高代码的灵活性和可测试性。Spring框架的依赖注入是其中的典型代表。 4. **AOP(面向切面编程...
Struts框架强调的是企业级应用程序的可配置性和可扩展性,它提供了一套完整的架构,包括配置文件、标签库和异常处理机制,简化了大型Java Web项目的开发。 JSF则是Sun Microsystems制定的一个标准,它比Struts...
"JAVA SMART系统-系统框架设计与开发(源代码+文档).zip" 是一个包含Java智能系统框架设计与开发的相关资源的压缩包。这个压缩包很可能是一个教学或实践项目,提供了完整的源代码和相关文档,帮助学习者理解并研究...
本文将详细介绍 Java 异常处理机制的应用研究,包括 Java 异常体系统结构、异常分类与处理机制、异常处理的一般原则和异常处理框架等。 Java 异常体系统结构 Java 异常体系统结构如图 1 所示,Throwable 是所有...
10. **异常处理**:框架可能会提供统一的异常处理机制,便于开发者对错误进行集中管理和报告。 11. **测试支持**:为了促进单元测试和集成测试,迷你框架可能包含了测试工具和辅助类,帮助开发者编写和运行测试。 ...
对于Java初学者而言,学习并实践Struts框架能够帮助他们更好地理解Web应用的架构设计,提升开发技能。 首先,我们来深入了解一下Struts框架的核心概念。Struts框架提供了一种结构化的方式来组织Java Web应用程序,...
在Java开发中,数据库框架是不可或缺的一部分,它们简化了数据访问层(DAL)的实现,提高了开发效率。...但对于小型项目或学习实践,这样的自定义框架是一个很好的学习和理解数据库操作框架设计的好途径。