`

Java 通用异常处理类

    博客分类:
  • Java
阅读更多
/**
 * (#)ThrowableManager.java	1.0	Apr 10, 2008
 * 
 * Copyright 2007- wargrey , Inc. All rights are reserved.
 */
package net.wargrey.application;

import java.awt.Component;
import javax.swing.JOptionPane;

/**
 * This class <code>ExceptionManager</code> and its subclasses are a form of 
 * <code>Exception</code>. It is used to wrap all the <code>Throwable</code> instances
 * and handle them in a unified way. It will show the information which consists of 
 * StackTraces and Messages by using JOptionPanel.
 * 
 * @author Estelle
 * @version 1.0
 * @see java.lang.Exception
 * @since jdk 1.5
 */
public class ExceptionManager extends RuntimeException {
	
	/**
	 * This field <code>alerter</code> is used to show the information the Class offered.
	 * 
	 * @see javax.swing.JOptionPane
	 */
	private JOptionPane alerter;
	
	/**
	 * This static method create an instance of the ExceptionManager by invoking the 
	 * constructor <code>ExceptionManager(String msg)</code>.
	 * 
	 * @param msg	The message will pass the specified constructor
	 * @return	An instance of the ExceptionManager created by invoking the constructor
	 * 			<code>ExceptionManager(String msg)</code>.
	 */
	public static ExceptionManager wrap(String msg){
		return new ExceptionManager(msg);
	}
	
	/**
	 * This static method create an instance of the ExceptionManager by invoking the 
	 * constructor <code>ExceptionManager(Throwable throwable)</code>.
	 * 
	 * @param throwable		The cause will pass the specified constructor
	 * @return	An instance of the ExceptionManager created by invoking the constructor
	 * 			<code>ExceptionManager(Throwable throwable)</code>.
	 */
	public static ExceptionManager wrap(Throwable throwable){
		return new ExceptionManager(throwable);
	}
	
	/**
	 * This static method create an instance of the ExceptionManager by invoking the 
	 * constructor <code>ExceptionManager(String msg,Throwable throwable)</code>. 
	 * 
	 * @param msg			The message will pass the specified constructor
	 * @param throwable		The cause will pass the specified constructor
	 * @return	An instance of the ExceptionManager created by invoking the constructor
	 * 			<code>ExceptionManager(String msg, Throwable throwable)</code>
	 */
	public static ExceptionManager wrap(String msg,Throwable throwable){
		return new ExceptionManager(msg,throwable);
	}
	
	/**
	 * Constructs a new instance with the specified detail message. The concrete handler 
	 * is its super class. This constructor always used to construct a custom exception
	 * not wrapping the exist exception.
	 * 
	 * @param msg		the detail message which is the part of the information will be
	 * 					shown.
	 */
	public ExceptionManager(String msg){
		super(msg);
	}
	
	/**
	 * Constructs a new instance with the specified detail cause. The concrete handler 
	 * is its super class. This constructor always used to wrap an exist exception.
	 * 
	 * @param throwable		the cause which has been caught. It's detail message and 
	 * 						stacktrace are the parts the information will be shown.
	 */
	public ExceptionManager(Throwable throwable){
		super(throwable);
	}
	
	/**
	 * Constructs a new instance with the specified detail message and cause. The 
	 * concrete handler is its super class. This constructor always used to construct
	 * an exception wrapping the exist exception but requires a custom message. 
	 * 
	 * @param msg		the detail message which is the part of the information will 
	 * 					be shown.
	 * @param throwable	the cause which has been caught. It's stacktrace is the parts
	 * 					the information will be shown.
	 */
	public ExceptionManager(String msg,Throwable throwable){
		super(msg,throwable);
	}
	
	/**
	 * Show the information with everything is default.
	 */
	public synchronized void alert(){
		alert((Component)null);
	}
	
	/**
	 * Show the information in a dialog with the specified title 
	 * "ThrowableManager Alerter". The dialog belongs to the given component which 
	 * default is the screen. 
	 * 
	 * @param parent	The component cause the exception.
	 */
	public synchronized void alert(Component parent){
		alert(parent,"ThrowableManager Alerter");
	}
	
	/**
	 * Show the information in a dialog with the specified title.
	 * 
	 * @param title		The title of the dialog.
	 */
	public synchronized void alert(String title){
		alert((Component)null,title);
	}
	
	/**
	 * Show the information in a dialog which has the specified title and belongs to the
	 * specified component.
	 * 
	 * @param parent	The component cause the exception.
	 * @param title		The title of the dialog.
	 */
	public synchronized void alert(Component parent,String title){
		StringBuilder errorMessage=new StringBuilder();
        errorMessage.append(this.toString());
    	for (StackTraceElement st:((this.getCause()==null)?this:this.getCause()).getStackTrace()){
    		errorMessage.append("\n\t     at ");
    		errorMessage.append(st.toString());
    	}        
		alerter.showMessageDialog(parent, errorMessage, title ,JOptionPane.ERROR_MESSAGE);
		System.err.println(errorMessage);
	}
}

 

分享到:
评论

相关推荐

    java工具类,日志处理类

    在描述中提到的“java通用异常处理类”,可能包含了一些预定义的异常处理器,可以统一处理程序中抛出的各种异常,提高代码的可读性和可维护性。 日志处理是系统调试、监控和问题排查的重要手段。在Java中,Log类...

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

    本文将从 Java 异常的基本概念和语法开始,讲述 Java 异常处理的基本知识,分析 Java 异常体系结构,对比 Spring 的异常处理框架,阐述异常处理的基本原则,并提出了自己处理一个大型应用系统异常的思想,并通过设计...

    Java异常处理终结篇——如何进行Java异常处理设计 - 望远的个人页面 - 开源中国社区1

    在Java中,异常处理是通过try-catch-finally语句块来实现的,主要涉及两大类异常:编译时异常(Checked Exception)和运行时异常(Unchecked Exception)。编译时异常是Exception类及其子类,它们在编译阶段就必须被...

    通用异常处理

    "通用异常处理"指的是设计一种可以捕获并处理各种类型异常的机制,这种机制旨在提高程序的健壮性和稳定性,避免因为未预见的错误导致整个程序崩溃。在描述中提到的“出异常,自动发邮件”,这表明该通用异常处理还...

    Java 异常处理的误区和经验总结

    在Java编程中,异常处理是确保程序健壮性与稳定性的重要环节。然而,许多开发者在实际操作中常常陷入一些常见的异常处理误区,这不仅可能导致程序的错误难以追踪,还可能影响程序性能。以下是对Java异常处理的一些...

    Java异常处理Java异常处理.doc

    Java异常处理是编程中至关重要的一个部分,它用于管理和恢复程序执行过程中可能出现的错误或异常情况。当程序遇到无法预见的问题,如文件未找到、网络连接中断或计算溢出等,Java通过异常处理机制来优雅地处理这些...

    java数据库操作通用类

    1. 异常处理:在进行数据库操作时,应捕获并处理可能抛出的SQLException,确保程序的健壮性。 2. 连接池管理:合理配置连接池参数,如最大连接数、超时时间等,以适应不同的应用场景。 3. 数据库兼容性:通用...

    java 多线程异常处理

    Java多线程异常处理是Java编程中不可或缺的一部分,特别是在并发编程场景下,正确处理异常能够保证程序的稳定性和健壮性。本实验报告主要涵盖了Java异常处理机制、多线程概念与实现,以及多线程同步问题。 首先,...

    Java通用范例开发金典源代码

    《Java通用范例开发金典源代码》是一个包含大量Java编程示例的资源集合,旨在帮助开发者深入理解和掌握Java编程语言的各种特性和应用场景。这个压缩包文件中的源代码覆盖了Java语言的基础到高级各个方面,是Java学习...

    项目通用java类

    4. 异常处理和日志记录类:提供统一的异常处理机制和日志记录,便于调试和问题定位。 5. 可能还有配置类和接口定义,用于项目的模块化和扩展性。 这些类库对于Java开发者来说非常实用,可以快速集成到项目中,避免...

    Java通用范例开发金典

    3. **异常处理**:Java的异常处理机制允许程序员优雅地处理程序运行时可能出现的问题。通过try-catch-finally结构,可以捕获并处理异常,保证程序的健壮性。 4. **集合框架**:Java集合框架包括List、Set、Map等...

    java通用数据库操作类

    Java通用数据库操作类是Java开发中常用的一种工具,主要用于简化对数据库的访问,它通过封装JDBC(Java Database Connectivity)接口来实现与多种数据库的交互。JDBC是Java语言连接数据库的标准,它提供了多种功能,...

    java处理JSON格式数据的通用类

    假设我们有一个User类,包含name和age属性,我们可以这样使用通用JSON处理类: ```java User user = JsonUtil.fromJson(jsonString, User.class); String jsonString = JsonUtil.toJson(user); User ...

    Java通用范例 开发金典

    《Java通用范例 开发金典》是一本深入探讨Java编程技术的著作,它涵盖了Java开发中的各种常见问题和最佳实践。源代码是程序设计的重要组成部分,本书提供的源代码可以帮助读者更好地理解书中所讲解的理论知识,提升...

    Java异常处理基础-Java教程共1页.pdf.zip

    Java异常处理是编程中至关重要的一个环节,尤其是在大型软件系统中,良好的异常处理机制能够确保程序的健壮性和稳定性。本教程将深入讲解Java异常处理的基础知识,帮助开发者理解和掌握如何在Java中有效地处理错误和...

    《Java通用范例开发金典》

    《Java通用范例开发金典》是一本专为Java开发者准备的实践指南,它涵盖了Java编程的多个核心领域,旨在帮助读者深入理解并熟练运用Java语言进行软件开发。该书的源代码是学习和参考的重要资源,能为初学者提供实际...

    java异常管理

    Java提供了一套完整的异常处理机制,帮助开发者有效地处理这些异常,避免程序突然崩溃。 1. 异常分类: Java中的异常分为检查性异常(Checked Exceptions)和运行时异常(Unchecked Exceptions)。检查性异常是...

    异常处理.ppt异常处理.ppt异常处理.ppt异常处理.ppt异常处理.ppt

    【异常处理】是编程中必不可少的一个环节,尤其是在Java这样的面向对象语言中。异常处理机制使得程序在遇到错误时能够优雅地中断执行流程,提供错误信息,并有机会进行恢复操作,而不是简单地崩溃。以下是对异常处理...

    Java异常处理

    Java异常处理是Java编程语言中的一个关键特性,它允许程序员优雅地处理程序运行时可能出现的错误情况,确保程序的稳定性和健壮性。在Java中,异常是通过使用`try-catch`块来捕获和处理的。这些块用于包围可能会抛出...

    《Java通用范例》完整源代码

    《Java通用范例》完整源代码是一份宝贵的资源,它为Java学习者提供了大量实践案例,涵盖了Java编程的多个重要方面。这份源代码集合旨在帮助初学者和有经验的开发者更好地理解和应用Java语言的关键概念,同时也为实际...

Global site tag (gtag.js) - Google Analytics