`

异常处理框架

    博客分类:
  • java
 
阅读更多

The Nature of Exceptions


Broadly speaking, there are three different situations that cause exceptions to be thrown:

    Exceptions due to programming errors : In this category, exceptions are generated due to programming errors (e.g., NullPointerException and IllegalArgumentException). The client code usually cannot do anything about programming errors.

    Exceptions due to client code errors : Client code attempts something not allowed by the API, and thereby violates its contract. The client can take some alternative course of action, if there is useful information provided in the exception. For example: an exception is thrown while parsing an XML document that is not well-formed. The exception contains useful information about the location in the XML document that causes the problem. The client can use this information to take recovery steps.

    Exceptions due to resource failures: Exceptions that get generated when resources fail. For example: the system runs out of memory or a network connection fails. The client's response to resource failures is context-driven. The client can retry the operation after some time or just log the resource failure and bring the application to a halt.

 

Java defines two kinds of exceptions:

  • Checked exceptions: Exceptions that inherit from the Exception class are checked exceptions. Client code has to handle the checked exceptions thrown by the API, either in a catch clause or by forwarding it outward with the throws clause.

  • Unchecked exceptions: RuntimeException also extends from Exception . However, all of the exceptions that inherit from RuntimeException get special treatment. There is no requirement for the client code to deal with them, and hence they are called unchecked exceptions.

Java的异常处理机制具有的优势:
给错误进行了统一的分类,通过扩展Exception类或其子类来实现。从而避免了相同的错误可能在不同的方法中具有不同的错误信息。在不同的方法中出现相同的错误时,只需要throw 相同的异常对象即可。
获得更为详细的错误信息。通过异常类,可以给异常更为详细,对用户更为有用的错误信息。以便于用户进行跟踪和调试程序。
把正确的返回结果与错误信息分离。降低了程序的复杂度。调用者无需要对返回结果进行更多的了解。
强制调用者进行异常处理,提高程序的质量。当一个方法声明需要抛出一个异常时,那么调用者必须使用try….catch块对异常进行处理。当然调用者也可以让异常继续往上一层抛出。

 

我们的异常处理框架

在具体的业务中,会涉及到业务返回错误的情形。比如用户登录需要验证用户名和密码,如果正确的时候,方法返回用户的uid,如果错误,返回对应的错误信息,比如用户名不存在,密码不匹配等。

为了分离正确返回结果和错误的情形,这里定义业务异常,由外部程序进行捕获与处理是恰当的。其中业务异常是一个checkedException,强制外部进行处理。

 

对于一个模块,发生如下的情形时,应当抛出RuntimeException:

  • 访问的资源发生错误,例如网络通信失败;(如有需要,网络通信失败可以进行重试)数据库访问失败;
  • 调用其他系统的方法,返回未知的业务代码;(这种情况应当详细记录,便于未来修改程序)
  • 其他无法处理的异常。

中间程序对异常的处理:如果一个业务异常能够进行处理的话,则不抛出,内部进行处理;否则直接抛出;

 

顶层容器对异常的处理:业务异常通常决定了流程,需要进行处理;同时采用统一的处理机制来处理RuntimeException,比如跳转到指定的错误页面。

 

 

异常的记录规则:

RuntimeException异常应该在最初产生的位置进行记录!业务异常能够处理的话不必进行记录,属于流程的一部分。

顶层容器需要对所有RuntimeException进行记录,因为他们可能从多个渠道产生。

 

 

分享到:
评论

相关推荐

    高效的java异常处理框架高效的java异常处理框架高效的java异常处理框架

    高效的 Java 异常处理框架 Java 异常处理是 Java 语言中的一个关键组件,用于处理程序运行过程中的错误和异常。在 Java 中,异常处理框架是 Java 语言健壮性的一个重要体现。本文将从 Java 异常的基本概念和语法...

    深入探索 高效的Java异常处理框架

    什么时间使用runtimeException,什么时间使用Exception,大家有没有被困扰到?经整理,JAVA异常处理框架,以及如何构造自己的异常体系,讲得比较详细,值得一看。

    J2EE应用程序的异常处理框架

    异常处理框架的目标是简化这一过程,让开发人员能够更专注于核心业务逻辑,而非繁琐的异常处理代码。本文将探讨如何在J2EE环境中有效地管理和处理异常。 首先,我们要区分两种类型的异常:checked异常和unchecked...

    深入探索高效的Java异常处理框架

    本文深入探讨了高效Java异常处理框架,旨在提高代码的健壮性和稳定性。首先,文章介绍了异常的基本概念和Java异常体系结构。 Java将异常视为对象来处理,所有的异常都继承自`java.lang.Throwable`类。Throwable类有...

    基于AOP的Java异常处理框架和工具的分析与设计.pdf

    "基于AOP的Java异常处理框架和工具的分析与设计" 本文主要探讨了基于AOP(Aspect-Oriented Programming,面向方面编程)的Java异常处理框架和工具的分析与设计。 异常处理机制是当前软件系统的重要组成部分,被大...

    android-crash, [DEPRECATED] android程序崩溃异常处理框架.zip

    在Android开发中,崩溃异常处理框架是至关重要的,它能够帮助开发者及时捕获并记录应用程序运行时出现的错误,从而提高应用的稳定性和用户体验。"android-crash"框架,尽管已被废弃,但仍然能为我们提供一些关于如何...

    高效的Java异常处理框架.dot

    高效的Java异常处理框架

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

    应用程序中充斥着零散的异常处理代码,使程序代码晦涩难懂、可读性差,并且难于维护一个好的异常处理框架能为应用程序的异常处理提供统一的处理视图,把异常处理从程序正常运行逻辑分离出来,以至于提供更加结构化...

    高效的Java异常处理框架.pdf

    高效的Java异常处理框架.pdf

    通用异常处理框架

    通用异常处理框架.异常捕捉、处理是每个项目中必不可少的一部分,利用反射和XML配置技术实现一个通用的、灵活的、可配置的、高度可自扩展的异常处理框架对项目的整体健壮性以及异常处理效率都是非常重要的。通用异常...

    嵌入式操作系统异常处理框架设计与实现

    通过分析嵌入式系统新的异常处理需求,提出一种结构化异常处理框架,在传统的异常处理机制基础上引入了新的功能特性,并以电信级嵌入式Linux为原型,描述了该框架的具体实现及应用。与其他主流异常处理机制的对比...

    为J2EE定制一个用来处理错误的异常处理框架

    回顾一下上一个J2EE工程,是否遇到过类似错误没有记 入日志或者被多次记录的情况?是否只是因为在某处代码吃 掉了异常导致你花费无数次时间...这篇文章为你提供了在J2EE项目中通过使用错误处理框架使用一些策略的基础。

    异常处理框架绘图

    绘图2 如涉及侵权内容,您的资源将被移除如涉及侵权内容,您的资源将被移除

    Windows下的异常处理

    二、异常处理框架 Windows使用结构化异常处理(Structured Exception Handling, SEH)机制来管理异常。SEH包括三个主要组件:异常发生器、异常处理器和异常过滤器。当异常发生时,处理器会按照预先定义的顺序调用...

    Java异常处理机制应用研究.pdf

    本文将详细介绍 Java 异常处理机制的应用研究,包括 Java 异常体系统结构、异常分类与处理机制、异常处理的一般原则和异常处理框架等。 Java 异常体系统结构 Java 异常体系统结构如图 1 所示,Throwable 是所有...

    易语言源码易语言SEH异常处理源码.rar

    SEH是微软在Windows操作系统中引入的一种异常处理框架,它的主要目的是在程序运行过程中,当遇到无法正常执行的异常情况时,提供一种恢复或终止程序的机制。在易语言中实现SEH异常处理,开发者可以编写代码来优雅地...

    使用纯C语言实现异常处理

    这个例子展示了如何在C语言中实现一个简单的异常处理框架。通过这种方式,我们可以在程序中集中处理错误,使代码更易于理解和维护。当然,这只是一个基础模型,实际应用中可能需要扩展这个框架,比如添加堆栈回溯、...

Global site tag (gtag.js) - Google Analytics