- 浏览: 188542 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
Errorize:
一个用servlet实现导出csv文件的实例 -
wendellhu:
求monkey talk应用文档的解压密码
monkey talk应用文档 -
wendellhu:
加密的?
monkey talk应用文档 -
hugang357:
hslh22 写道不错的资源,可以使用,只是没有最大最小值的限 ...
数字微调输入框 -
hslh22:
不错的资源,可以使用,只是没有最大最小值的限制,需要自己去加逻 ...
数字微调输入框
}else
{
//checked exception such as xxxBusinessException
//将这样的异常暴露给客户显示
}
}
}
我们可以这样设计xxxBusinessException
public class xxxBusinessException extends ApplicationException
{
public xxxBusinessException(String s){
super(s);
};
import java.io.PrintStream;
import java.io.PrintWriter;
public class ApplicationException extends Exception {
/** A wrapped Throwable */
protected Throwable cause;
public ApplicationException() {
super("Error occurred in application.");
}
public ApplicationException(String message) {
super(message);
}
public ApplicationException(String message, Throwable cause) {
super(message);
this.cause = cause;
}
// Created to match the JDK 1.4 Throwable method.
public Throwable initCause(Throwable cause) {
this.cause = cause;
return cause;
}
public String getMessage() {
// Get this exception's message.
String msg = super.getMessage();
Throwable parent = this;
Throwable child;
// Look for nested exceptions.
while((child = getNestedException(parent)) != null) {
// Get the child's message.
String msg2 = child.getMessage();
// If we found a message for the child exception,
// we append it.
if (msg2 != null) {
if (msg != null) {
msg += ": " + msg2;
} else {
msg = msg2;
}
}
// Any nested ApplicationException will append its own
// children, so we need to break out of here.
if (child instanceof ApplicationException) {
break;
}
parent = child;
}
// Return the completed message.
return msg;
}
public void printStackTrace() {
// Print the stack trace for this exception.
super.printStackTrace();
Throwable parent = this;
Throwable child;
// Print the stack trace for each nested exception.
while((child = getNestedException(parent)) != null) {
if (child != null) {
System.err.print("Caused by: ");
child.printStackTrace();
if (child instanceof ApplicationException) {
break;
}
parent = child;
}
}
}
public void printStackTrace(PrintStream s) {
// Print the stack trace for this exception.
super.printStackTrace(s);
Throwable parent = this;
Throwable child;
// Print the stack trace for each nested exception.
while((child = getNestedException(parent)) != null) {
if (child != null) {
s.print("Caused by: ");
child.printStackTrace(s);
if (child instanceof ApplicationException) {
break;
}
parent = child;
}
}
}
public void printStackTrace(PrintWriter w) {
// Print the stack trace for this exception.
super.printStackTrace(w);
Throwable parent = this;
Throwable child;
// Print the stack trace for each nested exception.
while((child = getNestedException(parent)) != null) {
if (child != null) {
w.print("Caused by: ");
child.printStackTrace(w);
if (child instanceof ApplicationException) {
break;
}
parent = child;
}
}
}
public Throwable getCause() {
return cause;
}
}
而"聪明"的读者肯定要问我那doBusiness()这个业务方法该如何包装异常呢?
public void doBusiness() throw xxxBusinessException
{
try
{
execute1(); // if it throw exception1
exexute2(); // if it throw exception 2
.... .....
}
catch (exception1 e1)
{
throw new xxxBusinessException(e1);
}
catch(exception2 e2)
{
throw new xxxBusinessException(e2);
}
........
}
也可以这样
public void doBusiness() throw xxxBusinessException
{
try
{
execute1(); // if it throw exception1
exexute2(); // if it throw exception 2
.... .....
}
catch (Exception e)
{
// 注意很多应用在这里根本不判断异常的类型而一股脑的采用
// throw new xxxBusinessException(e);
// 而这样带来的问题就是xxxBusinessException"吞掉了"RuntimeException
// 从而将checked excption 与unchecked exception混在了一起!
// 其实xxxBusinessException属于checked excpetion ,它根本不应该也不能够理睬RuntimeException
if(! e instanceof RuntimeException) throw new xxxBusinessException(e);
}
}
总结
1。JAVA的异常分为两类: checked exception & unchecked excpetion
2。应用开发中产生的异常都应该集成自Exception 但都属于checked excpetion类型
3。应用中的每一层在包装并传递异常的时候要过滤掉RuntimeException!
4。从责任这个角度看Error属于JVM需要负担的责任;RuntimeException是程序应该负担的责任;checked exception 是具体应用负担的责任
5。无论如何我们都不希望或者确切的说是不应该将RuntimeException这样的异常暴露给客户的,因为他们没有解决这个问题的责任!
{
//checked exception such as xxxBusinessException
//将这样的异常暴露给客户显示
}
}
}
我们可以这样设计xxxBusinessException
public class xxxBusinessException extends ApplicationException
{
public xxxBusinessException(String s){
super(s);
};
import java.io.PrintStream;
import java.io.PrintWriter;
public class ApplicationException extends Exception {
/** A wrapped Throwable */
protected Throwable cause;
public ApplicationException() {
super("Error occurred in application.");
}
public ApplicationException(String message) {
super(message);
}
public ApplicationException(String message, Throwable cause) {
super(message);
this.cause = cause;
}
// Created to match the JDK 1.4 Throwable method.
public Throwable initCause(Throwable cause) {
this.cause = cause;
return cause;
}
public String getMessage() {
// Get this exception's message.
String msg = super.getMessage();
Throwable parent = this;
Throwable child;
// Look for nested exceptions.
while((child = getNestedException(parent)) != null) {
// Get the child's message.
String msg2 = child.getMessage();
// If we found a message for the child exception,
// we append it.
if (msg2 != null) {
if (msg != null) {
msg += ": " + msg2;
} else {
msg = msg2;
}
}
// Any nested ApplicationException will append its own
// children, so we need to break out of here.
if (child instanceof ApplicationException) {
break;
}
parent = child;
}
// Return the completed message.
return msg;
}
public void printStackTrace() {
// Print the stack trace for this exception.
super.printStackTrace();
Throwable parent = this;
Throwable child;
// Print the stack trace for each nested exception.
while((child = getNestedException(parent)) != null) {
if (child != null) {
System.err.print("Caused by: ");
child.printStackTrace();
if (child instanceof ApplicationException) {
break;
}
parent = child;
}
}
}
public void printStackTrace(PrintStream s) {
// Print the stack trace for this exception.
super.printStackTrace(s);
Throwable parent = this;
Throwable child;
// Print the stack trace for each nested exception.
while((child = getNestedException(parent)) != null) {
if (child != null) {
s.print("Caused by: ");
child.printStackTrace(s);
if (child instanceof ApplicationException) {
break;
}
parent = child;
}
}
}
public void printStackTrace(PrintWriter w) {
// Print the stack trace for this exception.
super.printStackTrace(w);
Throwable parent = this;
Throwable child;
// Print the stack trace for each nested exception.
while((child = getNestedException(parent)) != null) {
if (child != null) {
w.print("Caused by: ");
child.printStackTrace(w);
if (child instanceof ApplicationException) {
break;
}
parent = child;
}
}
}
public Throwable getCause() {
return cause;
}
}
而"聪明"的读者肯定要问我那doBusiness()这个业务方法该如何包装异常呢?
public void doBusiness() throw xxxBusinessException
{
try
{
execute1(); // if it throw exception1
exexute2(); // if it throw exception 2
.... .....
}
catch (exception1 e1)
{
throw new xxxBusinessException(e1);
}
catch(exception2 e2)
{
throw new xxxBusinessException(e2);
}
........
}
也可以这样
public void doBusiness() throw xxxBusinessException
{
try
{
execute1(); // if it throw exception1
exexute2(); // if it throw exception 2
.... .....
}
catch (Exception e)
{
// 注意很多应用在这里根本不判断异常的类型而一股脑的采用
// throw new xxxBusinessException(e);
// 而这样带来的问题就是xxxBusinessException"吞掉了"RuntimeException
// 从而将checked excption 与unchecked exception混在了一起!
// 其实xxxBusinessException属于checked excpetion ,它根本不应该也不能够理睬RuntimeException
if(! e instanceof RuntimeException) throw new xxxBusinessException(e);
}
}
总结
1。JAVA的异常分为两类: checked exception & unchecked excpetion
2。应用开发中产生的异常都应该集成自Exception 但都属于checked excpetion类型
3。应用中的每一层在包装并传递异常的时候要过滤掉RuntimeException!
4。从责任这个角度看Error属于JVM需要负担的责任;RuntimeException是程序应该负担的责任;checked exception 是具体应用负担的责任
5。无论如何我们都不希望或者确切的说是不应该将RuntimeException这样的异常暴露给客户的,因为他们没有解决这个问题的责任!
发表评论
-
12hh
2013-06-07 09:35 783fdgtg -
百度只剩1
2012-03-22 00:10 0附件 -
Timer与TimerTask入门
2011-05-24 22:52 863Java2的开发包中提供了 ... -
Timer与TimerTask实例
2011-05-24 22:51 1390今天看了一下Timer与TimerTask的用法并且在网上 ... -
web应用每晚12点定时执行程序代码实例
2011-05-24 22:50 20951、当前web应用的web.xml文件配置容器监听类com ... -
Tomcat java 定时任务
2011-05-24 22:49 1216如何在Web工程中实现任 ... -
Java定时器在Web中的应用
2011-05-24 22:46 939本文实例的最终功能是每天某个时间点(如每晚22点)执行某一功能 ... -
java 导出成.csv文件的乱码问题
2011-05-19 23:54 2580已经解决因为所有页面都是用UTF-8的编码方式。本以为这 ... -
一个用servlet实现导出csv文件的实例
2011-05-19 23:49 3249Java采用反射导出CSV文件替代导出Excel p ... -
Google分页的经典案例
2011-05-05 22:26 798上一页 [1][2][3][4][5][6] ... -
Google分页的经典案例
2011-05-05 22:25 10041 、创建 Page 类, pack ... -
网络管理:openldap详解
2011-04-27 22:45 1111简介 LDAP是轻量目录 ... -
openldap的配置手册
2011-04-27 22:44 932最近一直在安装opneldap-2 ... -
slapd.conf 配置文件中的高级功能使用方法
2011-04-27 22:42 14931. 开启日志功能启用日 ... -
OpenLDAP主配置文件slapd.conf介绍
2011-04-27 22:41 1293安全起见,slapd.conf文件应该只让运行此进程的用户可读 ... -
定制你的LDAP目录的Schema
2011-04-27 22:38 1239(http://www.infoxa.com/asp/tech ... -
ubuntu 8.04上openldap的安装和使用
2011-04-27 22:36 10601、安装openldap。$ sudo apt-get ins ... -
ubuntu上部署OpenLDAP
2011-04-27 22:34 1788原文地址:https://help.ubuntu.com/co ... -
OpenLDAP中 Schema的详细介绍
2011-04-27 22:33 3164本章讲述了如何扩展用户使用的schema。本章假设阅读者已经熟 ... -
第一个JFreeChart实例
2011-01-21 00:12 2552JFreeChart的使用非常简单,我们只需要提供满 ...
相关推荐
这篇博文“Java异常框架设计”可能探讨了如何有效地利用Java的异常处理机制来构建可靠的系统。在这个讨论中,我们将深入理解Java异常的基本概念、异常分类、以及如何通过良好的框架设计提升代码的可读性和可维护性。...
Java 异常的基本概念和语法开始,讲述 Java 异常处理的基本知识,分析 Java 异常体系结构,对比 Spring 的异常处理框架,阐述异常处理的基本原则,并提出了自己处理一个大型应用系统异常的思想,并通过设计一个异常...
Java异常框架是Java编程语言中处理程序运行时错误和异常的核心机制。在Java中,异常是一种特殊的对象,用于表示程序运行过程中的不正常状态。Java的异常处理模型基于\"异常处理块\",包括try、catch、finally和throw...
总结来说,Java异常框架处理涉及的知识点包括异常类的层次结构、运行时异常与检查型异常的区别、异常处理结构(try-catch-finally)、自定义异常的设计与使用、第三方库异常的处理以及异常处理关键字的使用。...
Java 语言在设计的当初就考虑到异常处理的框架的方案,使得所有的异常都可以用一个类型来表示,不同类型的异常对应不同的子类异常。Java 异常机制的基础知识包括异常的基础概念、异常的分类、异常的对象、异常的来源...
【JAVA-CS快速开发框架设计文档】是一份详细指导JAVA开发者在无IDE环境下构建高效开发框架的资料,旨在帮助程序员在不依赖特定集成开发环境的情况下,实现界面设计与事件代码的动态开发。这份文档可能涵盖了从基础...
理解异常的分类和处理机制,结合适当的框架设计,可以构建出高效且易于维护的异常处理系统。在编写代码时,应尽量预见并预防可能出现的异常,使用合适的异常类型,避免过于宽泛的catch块,以及充分利用finally块进行...
总的来说,Java平台的统一异常框架设计旨在提供一个健壮、稳定且易于使用的异常处理机制,它通过异常的层次结构、国际化和拦截器,有效地管理和呈现应用程序可能出现的各种异常情况,提高了系统的可维护性和用户体验...
最后,Struts是基于MVC(Model-View-Controller)设计模式的Java Web框架,用于组织和控制应用的业务逻辑。Struts 2框架整合了其他开源项目,如FreeMarker和Tiles,提供了更丰富的视图渲染能力。通过Action、...
2. **Struts框架**:Struts是基于MVC(Model-View-Controller)设计模式的Java Web应用框架,用于处理用户请求和业务逻辑。在SSH整合中,Struts主要负责接收HTTP请求,转发到相应的Action,然后调用Service层处理...
"基于AOP的Java异常处理框架和工具的分析与设计" 本文主要探讨了基于AOP(Aspect-Oriented Programming,面向方面编程)的Java异常处理框架和工具的分析与设计。 异常处理机制是当前软件系统的重要组成部分,被大...
2. **MVC模式**:大多数Java框架都基于Model-View-Controller(MVC)设计模式,将业务逻辑、数据展示和用户交互分离,使得代码组织清晰,易于维护。开发者可以专注于业务逻辑的实现,而无需关心视图层和控制层的细节...
"JAVA SMART系统-系统框架设计与开发(源代码+文档).zip" 是一个包含Java智能系统框架设计与开发的相关资源的压缩包。这个压缩包很可能是一个教学或实践项目,提供了完整的源代码和相关文档,帮助学习者理解并研究...
Struts框架强调的是企业级应用程序的可配置性和可扩展性,它提供了一套完整的架构,包括配置文件、标签库和异常处理机制,简化了大型Java Web项目的开发。 JSF则是Sun Microsystems制定的一个标准,它比Struts...
对于Java初学者而言,学习并实践Struts框架能够帮助他们更好地理解Web应用的架构设计,提升开发技能。 首先,我们来深入了解一下Struts框架的核心概念。Struts框架提供了一种结构化的方式来组织Java Web应用程序,...
2. **依赖注入(Dependency Injection,DI)**:这是许多Java框架的核心特性,它允许对象之间的依赖关系在运行时自动配置,而不是硬编码在类内部。这使得代码更加灵活,易于测试和维护。 3. **组件化**:迷你框架...
本文将详细介绍 Java 异常处理机制的应用研究,包括 Java 异常体系统结构、异常分类与处理机制、异常处理的一般原则和异常处理框架等。 Java 异常体系统结构 Java 异常体系统结构如图 1 所示,Throwable 是所有...
JavaEE三大框架,即Struts2、Spring和Hibernate,是Java企业级开发中的核心组件,广泛应用于构建高效、可维护的Web应用。本课程设计旨在深入理解和熟练掌握这三大框架的集成与应用。 首先,Struts2是MVC(Model-...
在Java开发中,数据库框架是不可或缺的一部分,它们简化了数据访问层(DAL)的实现,提高了开发效率。...但对于小型项目或学习实践,这样的自定义框架是一个很好的学习和理解数据库操作框架设计的好途径。