- 浏览: 425063 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
burningblood:
最近也遇到了这个细节问题。我用的是4,里面没有 get.rel ...
httpclient的并发连接问题 -
greatwqs:
使用HttpURLConnection注意设置超时 -
qinweilh:
...
tomcat报错:standardServer.await: create[8005]: -
jayyunfei:
还是不很明白
JPA entityManager的管理 -
a418040445:
...
Calendar
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 acatch
clause or by forwarding it outward with thethrows
clause. -
Unchecked exceptions:
RuntimeException
also extends fromException
. However, all of the exceptions that inherit fromRuntimeException
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进行记录,因为他们可能从多个渠道产生。
发表评论
-
糟糕透顶的axis2
2015-02-06 15:27 856我记得很早以前在网上看过文章,大致讲axis2的质量如何 ... -
使用java连接https的问题
2012-03-19 15:41 844在使用hudson的过程中,我们需要发送邮件的功能。但是公司的 ... -
SSL exception: "No subject alternative names matching IP address ..." & "No name
2012-02-08 09:35 10683When you want to establish an S ... -
ResourceBundle加载文件的顺序
2011-12-24 15:01 1362If a ResourceBundle class for ... -
httpclient的并发连接问题
2011-05-24 16:14 6683昨天的搜索系统又出状况了,几个库同时重建索引变得死慢。经 ... -
java connect https
2011-05-04 15:37 988When I use java to connect HTTP ... -
jvm的高性能
2011-04-25 13:48 806jdk将源代码编译成字节码之后,由JVM在运行期对其进行解释执 ... -
java annotation
2011-03-10 14:58 897JDK内置的annotaion 1. @Target ... -
java字节码的操纵
2011-03-09 16:35 1527http://www.infoq.com/cn/article ... -
java 范型
2011-03-09 15:15 752Java泛型(generics)是JDK 5中引入的一个新特性 ... -
正确使用 Volatile 变量
2011-03-04 09:34 786Java 语言中的 volatile 变 ... -
java中Thread与Runnable的区别
2011-02-25 20:42 1742在java中可有两种方式实现多线程,一种是继承Thread类, ... -
copy-on-write
2010-12-08 10:29 926Copy-on-write (sometimes refe ... -
synchronized原理
2010-11-29 14:40 1855每个JAVA对象都有一把锁, 当有多个线程同时访问共享资源的时 ... -
Map 四种同步方式的性能比较
2010-11-25 11:50 969如果需要使 Map 线程安全,大致有这么四种方法: 1、 ... -
Java中HashMap,LinkedHashMap,TreeMap的区别
2010-11-25 11:49 1743java为数据结构中的映射 ... -
java的内存泄漏
2010-11-25 10:52 10441 引言 Java的一个重要优点就是通过垃圾收集器 ... -
解析Java对象的equals()和hashCode()的使用
2010-11-25 10:49 1082前言 在Java语言中,equals()和hash ... -
java map
2010-11-25 10:40 11331. Map key: 同一个key必须hashcode相同。 ... -
Calendar
2010-09-17 15:44 1454对于时间的运算,应当使用Calendar: Calendar ...
相关推荐
高效的 Java 异常处理框架 Java 异常处理是 Java 语言中的一个关键组件,用于处理程序运行过程中的错误和异常。在 Java 中,异常处理框架是 Java 语言健壮性的一个重要体现。本文将从 Java 异常的基本概念和语法...
什么时间使用runtimeException,什么时间使用Exception,大家有没有被困扰到?经整理,JAVA异常处理框架,以及如何构造自己的异常体系,讲得比较详细,值得一看。
异常处理框架的目标是简化这一过程,让开发人员能够更专注于核心业务逻辑,而非繁琐的异常处理代码。本文将探讨如何在J2EE环境中有效地管理和处理异常。 首先,我们要区分两种类型的异常:checked异常和unchecked...
本文深入探讨了高效Java异常处理框架,旨在提高代码的健壮性和稳定性。首先,文章介绍了异常的基本概念和Java异常体系结构。 Java将异常视为对象来处理,所有的异常都继承自`java.lang.Throwable`类。Throwable类有...
"基于AOP的Java异常处理框架和工具的分析与设计" 本文主要探讨了基于AOP(Aspect-Oriented Programming,面向方面编程)的Java异常处理框架和工具的分析与设计。 异常处理机制是当前软件系统的重要组成部分,被大...
在Android开发中,崩溃异常处理框架是至关重要的,它能够帮助开发者及时捕获并记录应用程序运行时出现的错误,从而提高应用的稳定性和用户体验。"android-crash"框架,尽管已被废弃,但仍然能为我们提供一些关于如何...
高效的Java异常处理框架
应用程序中充斥着零散的异常处理代码,使程序代码晦涩难懂、可读性差,并且难于维护一个好的异常处理框架能为应用程序的异常处理提供统一的处理视图,把异常处理从程序正常运行逻辑分离出来,以至于提供更加结构化...
高效的Java异常处理框架.pdf
通用异常处理框架.异常捕捉、处理是每个项目中必不可少的一部分,利用反射和XML配置技术实现一个通用的、灵活的、可配置的、高度可自扩展的异常处理框架对项目的整体健壮性以及异常处理效率都是非常重要的。通用异常...
通过分析嵌入式系统新的异常处理需求,提出一种结构化异常处理框架,在传统的异常处理机制基础上引入了新的功能特性,并以电信级嵌入式Linux为原型,描述了该框架的具体实现及应用。与其他主流异常处理机制的对比...
回顾一下上一个J2EE工程,是否遇到过类似错误没有记 入日志或者被多次记录的情况?是否只是因为在某处代码吃 掉了异常导致你花费无数次时间...这篇文章为你提供了在J2EE项目中通过使用错误处理框架使用一些策略的基础。
绘图2 如涉及侵权内容,您的资源将被移除如涉及侵权内容,您的资源将被移除
二、异常处理框架 Windows使用结构化异常处理(Structured Exception Handling, SEH)机制来管理异常。SEH包括三个主要组件:异常发生器、异常处理器和异常过滤器。当异常发生时,处理器会按照预先定义的顺序调用...
本文将详细介绍 Java 异常处理机制的应用研究,包括 Java 异常体系统结构、异常分类与处理机制、异常处理的一般原则和异常处理框架等。 Java 异常体系统结构 Java 异常体系统结构如图 1 所示,Throwable 是所有...
SEH是微软在Windows操作系统中引入的一种异常处理框架,它的主要目的是在程序运行过程中,当遇到无法正常执行的异常情况时,提供一种恢复或终止程序的机制。在易语言中实现SEH异常处理,开发者可以编写代码来优雅地...
这个例子展示了如何在C语言中实现一个简单的异常处理框架。通过这种方式,我们可以在程序中集中处理错误,使代码更易于理解和维护。当然,这只是一个基础模型,实际应用中可能需要扩展这个框架,比如添加堆栈回溯、...