下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、为 J2EE 定制一个用来处理错误的异常 处理框架 来源 :为 J2EE 定制一个用来处理错误的异常处理框架回顾一下你上一个 J2EE 工程, 是否遇到过类似错误没有记入日志或者被多 次记录的情况 ? 是否只是因为在某处代码吃 掉了异常导致你花费无数次时间来 跟踪一个 bug? 是否你的用户直接看到了堆栈的跟踪信息 ? 如果这样的话, 你可能 需要一种通用的异常管理的策略和一些补充的 代码。这篇文章为你提供了在 J2EE 项目中通过使用错误处理框架使用一些策略的基础。Java中关于异常处理的争论可以被认为是一种信仰上的争执 :一方面,强 制异常 (checked exceptions的支持者认
2、为调用者应该处理他们调用代码出现 的异常 ; 另一方面,非强制 (unchecked exceptions异常的追随者认为强制异常 混乱了代码,而且通常客户端不能立即处理,那为什么还要检查他呢。作为初级工程师,我们首先信奉的是强制异常,但几年后,在使用 N 久的 try/catch/finally后,我们开始转向非强制异常了。因为我们开始相信一些处 理错误状况的基本规则 :如果需要处理异常,那么就处理如果处理不了,就抛出如果抛不了,就用非强制的基类异常包装后再抛出但这些异常被抛到最顶层时会怎么样呢 ? 对这种情况,我们有一个底线确保 错误信息被记录并且用户得到正确的提示。本文提供了另外一种框架
3、来处理异常,它扩展了“Create anApplication-Wide User Session for J2EE”所提出的企业应用 session 工具。 使用此框架的 J2EE 应用将 :总是向用户提供有意义的错误信息记下未处理的错误环境,并且只记录一次在日志文件中用唯一的请求 ID 号对异常进行编号,以便进行高精度的调试 在各层中设置一个强壮的、可扩展的,而又简单的策略来处理异常为了搭建框架,我们运用了面向状态编程 (AOP, aspect-oriented programming 、设计模式和使用 XDoclet 进行代码生成。为什么我们需要通用的错误处理方法在项目的开始,我们会做一
4、些关键性的系统架构决定,如 :系统中的元素如 何交互 ? 会话状态保存在哪儿 ? 哪种通信协议会被使用等等。 但这里并没有包含错 误处理。因而每个开发人员都可以任意决定如何定义、分类、建模和处理错误。 作为一个开发人员,你可以想象在这种方式下的结果 :1. 臃肿的日志 :每个 try/catch都包含 log 语句, 这导致被污染的代码生成 臃肿和多余的日志入口。2. 多余的实现 :同一类型的错误有不同的表示,这导致处理的复杂化。3. 破碎的封装 :来自其他组件的异常被定义为方法标识的一部分, 这导致接 口和实现的分离被打破了。4. 不明确的异常定义 :方法签名通常采用抛出 java.lang
5、.Exception , 这导 致客户端不能明确得到方法错误的语义。通常没有定义异常处理策略的借口是 :java已经提供了异常处理。这是事 实, java 也提供一贯的定义、通信、传播及响应异常的工具。但开发人员需要 决定如何在实际的项目中使用这些服务。几个方面是必须要考虑的,如 :1. 检查或不检查异常 :是否应该检查或不检查新异常类 ?2. 异常的使用者 :究竟是谁需要知道什么时候会发生未处理的异常及由谁 来负责记录及通知操作人员 ?3. 基础的异常层次 :异常需要包含什么信息及异常层次需要反映什么语义 ?4. 传递 ; 是否未处理的异常会被定义或传递给别的异常类, 及他们如何在分 布式环境中传递 ?5. 解释 :未处理的异常如何被解释为可阅读的,甚至支持多语言的信息 ? 在框架中封装规则,要快 !我们给出的通用异常处理策略是基于如下的因素 :使用非强制的异常 :使用强制异常, 调用者要被迫处理他们几乎不能处理的 错误。 非强制的异常则给调用者一个选择。 在使用第三方类库时, 你不能控制 异 常是强制或非强制的。 这种情况下, 你需要用非强制异常来包含强
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年能源采购节能改造协议
- 高中地球科学中AI气候模型板块运动关联课题报告教学研究课题报告
- 高压旋喷桩施工方案
- 2026年智能家居行业睡眠优化创新报告
- 叉车考试笔试试题及答案
- 创建实施方案范本
- 公共车库整改方案范本
- 景区劳务外包方案范本
- 2026宁波甬科天使创业投资基金管理有限公司招聘1人备考题库及答案详解【名师系列】
- 2026云南红河州个旧市疾病预防控制中心(个旧市卫生监督所)合同制人员招聘3人备考题库附答案详解
- 超声内镜在胰腺疾病诊疗中的应用
- 供应链协同对农村电商发展的机制分析
- CIP、SIP工艺流程操作说明书
- 桩基施工安全措施方案
- 盘活利用闲置低效厂区厂房实施方案
- 高空安全培训试题及答案
- 2024年1月20日河北省委办公厅公开选调工作人员笔试真题及解析(综合文字岗)
- 商场人员进出管理制度
- 建设工程用电合同协议
- SJG 130 – 2023《混凝土模块化建筑技术规程》
- GB/T 4340.2-2025金属材料维氏硬度试验第2部分:硬度计的检验与校准
评论
0/150
提交评论