- 浏览: 416514 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 822我记得很早以前在网上看过文章,大致讲axis2的质量如何 ... -
使用java连接https的问题
2012-03-19 15:41 805在使用hudson的过程中,我们需要发送邮件的功能。但是公司的 ... -
SSL exception: "No subject alternative names matching IP address ..." & "No name
2012-02-08 09:35 10378When you want to establish an S ... -
ResourceBundle加载文件的顺序
2011-12-24 15:01 1314If a ResourceBundle class for ... -
httpclient的并发连接问题
2011-05-24 16:14 6647昨天的搜索系统又出状况了,几个库同时重建索引变得死慢。经 ... -
java connect https
2011-05-04 15:37 944When I use java to connect HTTP ... -
jvm的高性能
2011-04-25 13:48 773jdk将源代码编译成字节码之后,由JVM在运行期对其进行解释执 ... -
java annotation
2011-03-10 14:58 847JDK内置的annotaion 1. @Target ... -
java字节码的操纵
2011-03-09 16:35 1481http://www.infoq.com/cn/article ... -
java 范型
2011-03-09 15:15 700Java泛型(generics)是JDK 5中引入的一个新特性 ... -
正确使用 Volatile 变量
2011-03-04 09:34 741Java 语言中的 volatile 变 ... -
java中Thread与Runnable的区别
2011-02-25 20:42 1692在java中可有两种方式实现多线程,一种是继承Thread类, ... -
copy-on-write
2010-12-08 10:29 889Copy-on-write (sometimes refe ... -
synchronized原理
2010-11-29 14:40 1809每个JAVA对象都有一把锁, 当有多个线程同时访问共享资源的时 ... -
Map 四种同步方式的性能比较
2010-11-25 11:50 926如果需要使 Map 线程安全,大致有这么四种方法: 1、 ... -
Java中HashMap,LinkedHashMap,TreeMap的区别
2010-11-25 11:49 1708java为数据结构中的映射 ... -
java的内存泄漏
2010-11-25 10:52 10041 引言 Java的一个重要优点就是通过垃圾收集器 ... -
解析Java对象的equals()和hashCode()的使用
2010-11-25 10:49 1048前言 在Java语言中,equals()和hash ... -
java map
2010-11-25 10:40 10711. Map key: 同一个key必须hashcode相同。 ... -
Calendar
2010-09-17 15:44 1405对于时间的运算,应当使用Calendar: Calendar ...
相关推荐
高效的java异常处理框架高效的java异常处理框架高效的java异常处理框架高效的java异常处理框架高效的java异常处理框架
什么时间使用runtimeException,什么时间使用Exception,大家有没有被困扰到?经整理,JAVA异常处理框架,以及如何构造自己的异常体系,讲得比较详细,值得一看。
高效的Java异常处理框架
android-crash, [DEPRECATED] android程序崩溃异常处理框架
应用程序中充斥着零散的异常处理代码,使程序代码晦涩难懂、可读性差,并且难于维护一个好的异常处理框架能为应用程序的异常处理提供统一的处理视图,把异常处理从程序正常运行逻辑分离出来,以至于提供更加结构化...
本文从Java异常最基本的概念、语法开始讲述了Java异常处理的基本知识,分析了Java异常体系结构,对比Spring的异常处理框架,阐述了异常处理的基本原则。并且作者提出了自己处理一个大型应用系统异常的思想,并通过...
高效的Java异常处理框架.pdf
基于AOP的Java异常处理框架和工具的分析与设计
的 自适应异常处理 问题,从环境感知的角度 对导致制造云服务组 合 Qos变化的异常情况进行 了分析 ,并提 出了相应的 自适应调整机制 , 在此基础上构建 了一种制造云服务 组合的 自适应异常处理框架。
通用异常处理框架.异常捕捉、处理是每个项目中必不可少的一部分,利用反射和XML配置技术实现一个通用的、灵活的、可配置的、高度可自扩展的异常处理框架对项目的整体健壮性以及异常处理效率都是非常重要的。通用异常...
本文将讨论如何让异常处理保持简单和直观,使开发人员可以专心于开发业务逻辑,而不是把时间浪费在编写异常处理的样板代码上。本文还将说明用于在J2EE环境中创建和处理异常的基础知识和指导原则,并提出了一些可以...
回顾一下上一个J2EE工程,是否遇到过类似错误没有记 入日志或者被多次记录的情况?是否只是因为在某处代码吃 掉了异常导致你花费无数次时间...这篇文章为你提供了在J2EE项目中通过使用错误处理框架使用一些策略的基础。
通过分析嵌入式系统新的异常处理需求,提出一种结构化异常处理框架,在传统的异常处理机制基础上引入了新的功能特性,并以电信级嵌入式Linux为原型,描述了该框架的具体实现及应用。与其他主流异常处理机制的对比...
绘图2 如涉及侵权内容,您的资源将被移除如涉及侵权内容,您的资源将被移除
精品课件
安卓APP自定义异常处理器,Release状态下意外奔溃提示更加友好(代替系统默认的那个讨厌的对话框),不影响Debug模式下LogCat的打印。 ************************************************************************ ...
java WEB异常处理框架,客户端只需要简单配置一下filter,即可接入,无任何依赖 主要功能点 1、异常发生时异步发送报警邮箱,钉钉 2、简单的异常发生数据统计 测试地址: 如果有兴趣的朋友可以按照以下步骤进行打包(需要...
众所周知,条件语句可能包含的错误大约十倍于其他类型的语句。因此,在其他都相同时,如果你 能从代码中消除条件语句,你会得到更健壮的代码。