异常以及异常处理框架探析

概述

一般情况下,企业级应用都对应着复杂的业务逻辑,为了保证系统的健壮,必然需要面对各种系统业务异常 和运行时异常。

不好的异常处理方式容易造成应用程序逻辑混乱,脆弱而难于管理。应用程序中充斥着零散的异常 处理代码,使程序代码晦涩难懂、可读性差,并且难于维护。

一个好的异常处理框架能为应用程序的异常处理提供 统一的处理视图,把异常处理从程序正常运行逻辑分离出来,以至于提供更加结构化以及可读性的程序架构。另外,一个好 的异常处理框架具备可扩展性,很容易根据具体的异常处理需求,扩展出特定的异常处理逻辑。

另外,异常处理框 架从一定程度上依赖并体现系统架构层次。系统架构决定了系统中各个子系统,各个层次之间的交互,而异常处理框架则统 一体现这种架构中的各种交互所发生的错误、异常。因此,异常处理框架是系统架构时就应该考虑的问题。

本文将 对异常相关方面做一些讨论,并进而探讨一些关于构建稳健且可扩展的异常处理框架方面的视角或设计原则。由于本文引入 一部分 Java 语言中异常相关的概念,因此本文假设您熟悉 Java 相关基础知识以及了解 Java EE 和 EJB 相关技术。

Java 异常基本概念

在 Java 程序设计语言中,使用一种异常处理的错误捕获机制。当程序运行过程中发生 一些异常情况,程序有可能被中断、或导致错误的结果出现。在这种情况下,程序不会返回任何值,而是抛出封装了错误信 息的对象。Java 语言提供了专门的异常处理机制去处理这些异常。如图 1 所示为 Java 异常体系结构:

图 1. Java 异常体系结构

时间: 2025-01-20 11:00:20

异常以及异常处理框架探析的相关文章

Java异常以及异常处理框架探析

一般情况下,企业级应用都对应着复杂的业务逻辑,为了保证系统的健壮,必然需要面对各种系统业务异常和运行时异常. 不好的异常处理方式容易造成应用程序逻辑混乱,脆弱而难于管理.应用程序中充斥着零散的异常处理代码,使程序代码晦涩难懂.可读性差,并且难于维护. 一个好的异常处理框架能为应用程序的异常处理提供统一的处理视图,把异常处理从程序正常运行逻辑分离出来,以至于提供更加结构化以及可读性的程序架构.另外,一个好的异常处理框架具备可扩展性,很容易根据具体的异常处理需求,扩展出特定的异常处理逻辑. 另外,异

如何解决EnterLib异常处理框架最大的局限——基于异常"类型"的异常处理策略

个人觉得EnterLib的EHAB(Exception Handling Application Block)是一个不错的异常处理框架,借助于EHAB,我们可以配置的方式来自定义异常处理策略,从而带来最大的灵活性和可维护性.但是,在我看来,EHAB有一个最大的局限,把就是异常处理策略的粒度过大--只能提供基于异常类型级别.本篇文章通过一个自定义ExceptionHandler很好地解决了这个问题. 一.EnterLib基于异常类型的异常处理策略 EnterLib的异常处理策略基本上可以通过这样的

WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[下篇]

WCF客户端和服务端的框架体系相互协作,使得开发人员可以按照我们熟悉的方式进行异常的处理:在服务操作执行过程中抛出异常(FaultException),在调用服务时捕获异常,完全感觉不到"分布式"的存在,如同典型的"本地"操作一般.为了实现这样的效果,WCF在内部为我们作了很多. 消息交换是WCF进行通信的唯一手段,消息不仅仅是正常服务调用请求和回复的载体,服务端抛出的异常,甚至是服务的元数据都是通过消息的形式传向客户端的.所以,实现异常与消息之间的转换是整个异常处

在Spring基础上实现自己的异常处理框架

该异常处理框架满足的要求: 完整的异常组织结构 异常的统一处理 可配置,受管式,方便使用 完整的异常组织结构: 用户可以方便的定义自己的异常,但所有UncheckedException需要继承BaseAppRuntimeException,所有的checked Exception可以继承BaseAppException,或者需要抛出且不需要check时用WrapperredAppException封装后抛出 合理地使用checked异常 Exception有唯一的error code,这样用户报

网络渠道运营探析与对比

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 据不完全的数据报告获悉,按照国内绝大部分的"贴牌"制造业现状,大多仍处于传统商业模式的格局之内,这一反映基本上决定了行业扩展方式的走向.由口耳相传转为电话营销以及客户拜访的套路演变,显然易见的是传统销售方式正处于目前市场当中的绝对劣势. 针对细分行业网络市场与传统线下的对比之下,大多都是属于渠道运营与资源成本的优劣所在.由

探析置换滤镜(“伸展以适合”置换规律的研究)之一

滤镜 重温置换原理: ps的帮助中有如下几点关于置换图的明说.注:[]中是作者加的.老外翻译的东西就是不好理解. 1."置换"滤镜使用置换图中的颜色值[其实就是按照指定的通道的灰度值]改变选区[像素的移动] - 0 是最大的负向改变值,255 是最大的正向改变值,灰度值 128 不产生置换. 2.如果置换图[只]有一个通道,则图像沿着由水平比例和垂直比例所定义的对角线改变[像素的移动]. 如果置换图有多个通道,则第一个通道控制水平[方向像素的]置换,第二个通道控制垂直[方向像素的]置换

.NET中的异常和异常处理用法分析_实用技巧

本文较为详细的分析了.NET中的异常和异常处理用法.分享给大家供大家参考.具体分析如下: .NET中的异常(Exception) .net中的中异常的父类是Exception,大多数异常一般继承自Exception. 可以通过编写一个继承自Exception的类的方式,自定义异常类! 异常处理机制: 复制代码 代码如下: Try {     //可能发生异常的代码     //后续代码     } //Try以外的代码 catch(Exception e) { } finally { } 上述代

浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入_javascript技巧

在<浏览器环境下JavaScript脚本加载与执行探析之defer与async特性>中,我们研究了延迟脚本(defer)和异步脚本(async)的执行时机.浏览器支持情况.浏览器bug以及其他的细节问题.而除了defer和async特性,动态脚本和Ajax脚本注入也是两种常用的创建无阻塞脚本的方法.总的来看,这两种方法都能达到脚本加载不影响页面解析和渲染的作用,但是在不同的浏览器中,这两种技术所创建的脚本的执行时机还是有一定差异,今天我们再来探讨一下通过动态脚本技术和Ajax注入的脚本在这些方

浏览器环境下JavaScript脚本加载与执行探析之defer与async特性_javascript技巧

defer和async特性相信是很多JavaScript开发者"熟悉而又不熟悉"的两个特性,从字面上来看,二者的功能很好理解,分别是"延迟脚本"和"异步脚本"的作用.然而,以defer为例,一些细节问题可能开发者却并不一定熟悉,比如:有了defer特性的脚本会延迟到什么时候执行:内部脚本和外部脚本是不是都能够支持defer:defer后的脚本除了会延迟执行之外,还有哪些特殊的地方等等.本文结合已有的一些文章以及MDN文档中对两个特性的阐述,对de