Java异常使用_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java异常使用

Java异常使用

 2014/11/8 22:07:23  琼海溜  程序员俱乐部  我要评论(0)
  • 摘要:Java异常体系很庞大(eclipse,选中Exception,按下ctrl+T可看到),在实际运用中,我们会根据需要定义自己的异常。每个自定义异常一般从名字上就能看出所要表达的类型,比如业务异常BusinessException,任务异常JobException等。异常类的主要属性一般是异常号码和异常信息参数;其中异常号码应全局唯一,通过该号码可找到对应的异常信息(异常号码和异常信息的映射可配置到properties、xml文件,枚举类或是存储到数据库,异常信息可带有占位符)
  • 标签:使用 Java 异常

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文件,或是数据库存放,相应的也要进行改造,主要是获取原始信息和格式化后显示,这里只提供一种思路。

?

?

发表评论
用户名: 匿名