Java异常体系很庞大(eclipse,选中Exception,按下ctrl+T可看到),在实际运用中,我们会根据需要定义自己的异常。每个自定义异常一般从名字上就能看出所要表达的类型,比如业务异常BusinessException,任务异常JobException等。异常类的主要属性一般是异常号码和异常信息参数;其中异常号码应全局唯一,通过该号码可找到对应的异常信息(异常号码和异常信息的映射可配置到properties、xml文件,枚举类或是存储到数据库,异常信息可带有占位符);而异常信息参数在运行时传入,按顺序替换异常信息中的占位符,生成最终提示信息。
自定义异常如下:
@SuppressWarnings("serial")
public class DemoException extends Exception {
private String exceptionNo;// 异常号码,全局唯一
private Object[] placeHolderParams = new Object[0];// 异常信息参数,按顺序替换异常信息中的占位符
public DemoException(String exceptionNo) {
this.exceptionNo = exceptionNo;
}
public DemoException(String exceptionNo, Throwable cause) {
super(cause);
this.exceptionNo = exceptionNo;
}
public DemoException(String exceptionNo, Object... placeHolderParams) {
this(exceptionNo);
this.placeHolderParams = placeHolderParams;
}
public DemoException(String exceptionNo, Throwable cause, Object... placeHolderParams) {
this(exceptionNo, cause);
this.placeHolderParams = placeHolderParams;
}
@Override
public String getMessage() {
return ExceptionHelper.format(this.exceptionNo, this.placeHolderParams);
}
@Override
public String toString() {
return this.getMessage();
}
}
这里为方便,直接使用枚举类存放异常号码和异常信息。
import java.text.MessageFormat;
public enum ExceptionHelper {
DEMO_EXCEPTION("888888", "发送异常了,占位符1是[{0}],,占位符2是[{1}]")
// TODO 根据需要添加
;
private String exceptionNo;// 异常号码,全局唯一
private String exceptionMessage;// 异常信息,可添加占位符
private ExceptionHelper(String exceptionNo, String exceptionMessage) {
this.exceptionNo = exceptionNo;
this.exceptionMessage = exceptionMessage;
}
public String getExceptionNo() {
return this.exceptionNo;
}
public String getExceptionMessage() {
return this.exceptionMessage;
}
/**
* 根据异常号码获取原始异常信息
*
* @param exceptionNo
* @return
*/
public static String getErrorMessage(String exceptionNo) {
for (ExceptionHelper ee : values()) {
if (ee.getExceptionNo().equals(exceptionNo)) {
return ee.getExceptionMessage();
}
}
return null;
}
/**
* 格式化异常信息并返回最终显示信息
*
* @param exceptionNo
* @param placeHolderParams
* @return
*/
public static String format(String exceptionNo, Object... placeHolderParams) {
return MessageFormat.format(getErrorMessage(exceptionNo), placeHolderParams);
}
}
然后在捕获到DemoException后,调用方法getMessage或toString即可获取到要显示的消息。
上面的代码没有把异常号码显示在信息中,如需要显示在最前面,可修改成下面:
public static String format(String exceptionNo, Object... placeHolderParams) {
return "[" + exceptionNo + "]" + MessageFormat.format(getErrorMessage(exceptionNo), placeHolderParams);
}
另外就是如果我们使用了properties、xml文件,或是数据库存放,相应的也要进行改造,主要是获取原始信息和格式化后显示,这里只提供一种思路。
相关推荐
Java 异常处理习题 Java 异常处理是 Java 编程语言中的一种重要机制,用于处理程序在运行时可能出现的错误或异常情况。下面是关于 Java 异常处理的习题和知识点总结: 一、Java 异常处理关键字 * Java 中用来抛出...
在 Java 中,抛出异常可以使用 throw 语句,例如: ```java throw new MyException("这是一个自定义的异常"); ``` 捕捉异常可以使用 try-catch 语句,例如: ```java try { // 可能抛出异常的代码 } catch ...
本文将从 Java 异常的基本概念和语法开始,讲述 Java 异常处理的基本知识,分析 Java 异常体系结构,对比 Spring 的异常处理框架,阐述异常处理的基本原则,并提出了自己处理一个大型应用系统异常的思想,并通过设计...
Java 异常机制的基础知识包括异常的基础概念、异常的分类、异常的对象、异常的来源、异常的处理等几个方面。 一、Java 异常的基础知识 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以...
java异常练习题,北大青鸟学士后课后练习,主要是异常处理的小测验
Java异常处理是Java编程语言中的一个关键特性,它允许程序员优雅地处理程序运行时出现的错误情况,确保程序的稳定性和可靠性。这份“Java异常学习资料”包含了丰富的资源,帮助你深入理解Java异常机制,提升代码质量...
Java异常处理是编程中至关重要的一个环节,它关乎程序的健壮性和稳定性。在Java中,异常(Exception)被用来表示程序运行时发生的错误或不正常情况。异常并不等同于错误,它是程序设计的一部分,允许我们优雅地处理...
Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误情况时能够优雅地进行错误恢复或者至少提供有用的错误信息。Java异常是程序在运行时遇到的问题,例如数组越界、空指针异常、文件未找到等,这些问题...
这个主题,"Java异常处理体系",涉及到Java如何优雅地处理程序运行时的异常,确保程序的健壮性和稳定性。这篇博文链接(已提供但无法直接访问)可能详细解释了Java异常处理的基本概念、机制以及最佳实践。 Java异常...
java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理
这篇博文“Java异常框架设计”可能探讨了如何有效地利用Java的异常处理机制来构建可靠的系统。在这个讨论中,我们将深入理解Java异常的基本概念、异常分类、以及如何通过良好的框架设计提升代码的可读性和可维护性。...
异常与异常处理器的绑定方面,Java采用的是显式捕获,即必须显式地使用`try-catch`块来指定可能抛出异常的代码段和对应的异常处理代码。而在C++中,可以使用`try`块,但异常处理器可以是显式的,也可以是隐式的(在...
java异常的终极总结 包括非常全面的异常总结 你值得下载!
Java异常框架是Java编程语言中处理程序运行时错误和异常的核心机制。在Java中,异常是一种特殊的对象,用于表示程序运行过程中的不正常状态。Java的异常处理模型基于\"异常处理块\",包括try、catch、finally和throw...
Java异常处理是编程中至关重要的一个环节,它帮助开发者识别并修复程序运行时出现的问题。在Java中,异常是程序执行期间发生的不正常情况,通常会导致程序中断。下面将详细解释给定文件中提到的一些常见Java异常,并...
零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理...
Java异常处理设计是Java编程中一个至关重要的环节,它直接影响到程序的稳定性和可维护性。在Java中,异常处理是通过try-catch-finally语句块来实现的,主要涉及两大类异常:编译时异常(Checked Exception)和运行时...
理解并正确使用Java异常处理能够提高代码的健壮性和可读性。通过良好的异常处理,我们可以及时发现和解决程序运行时的问题,防止程序崩溃,并提供有用的错误信息帮助调试。此外,它还有助于分离错误处理逻辑,使代码...