java 自定义异常类
2016-03-01 16:14
148 查看
异常代码接口:
package com.bjhy.dataz.common.exception; /** * * <pre> * 异常代码接口 * 用枚举对此接口进行实现,并配合DataZException异常类产出异常 * * </pre> * */ public interface ErrorCode { // 错误码编号 String getCode(); // 错误码描述 String getDescription(); //打印重写 String toString(); }异常打印类
package com.bjhy.dataz.common.exception; import java.io.PrintWriter; import java.io.StringWriter; /** * 异常打印 * * */ public final class ExceptionTracker { public static final int STRING_BUFFER = 1024; public static String trace(Throwable ex) { StringWriter sw = new StringWriter(STRING_BUFFER); PrintWriter pw = new PrintWriter(sw); ex.printStackTrace(pw); return sw.toString(); } }异常类
package com.bjhy.dataz.common.exception; /** * dataZ框架异常类 * * */ public class DataZException extends RuntimeException { private static final long serialVersionUID = 1L; private ErrorCode errorCode; public DataZException(ErrorCode errorCode, String errorMessage) { super(errorCode.toString() + " - " + errorMessage); this.errorCode = errorCode; } private DataZException(ErrorCode errorCode, String errorMessage, Throwable cause) { super(errorCode.toString() + " - " + getMessage(errorMessage) + " - " + getMessage(cause), cause); this.errorCode = errorCode; } public static DataZException asDataXException(ErrorCode errorCode, String message) { return new DataZException(errorCode, message); } public static DataZException asDataXException(ErrorCode errorCode, String message, Throwable cause) { if (cause instanceof DataZException) { return (DataZException) cause; } return new DataZException(errorCode, message, cause); } public static DataZException asDataXException(ErrorCode errorCode, Throwable cause) { if (cause instanceof DataZException) { return (DataZException) cause; } return new DataZException(errorCode, getMessage(cause), cause); } public ErrorCode getErrorCode() { return this.errorCode; } private static String getMessage(Object obj) { if (obj == null) { return ""; } if (obj instanceof Throwable) { return ((Throwable) obj).getMessage(); } else { return obj.toString(); } } }
相关文章推荐
- spring自定义标签实现
- Java开发中的23种设计模式详解
- Specified VM install not found: type Standard VM, name jre7
- spring入门之ContextLoadListener
- Java语言 实现并归排序
- 通过使用Byte Buddy,便捷地创建Java Agent
- Java中23中设计模式
- Proxy动态代理
- java方法中将类实例作为参数,在方法中有可能会改变这个类实例中的资源
- 线上Java应用排查和诊断规范
- Java中的System类
- Leetcode:217. Contains Duplicate(JAVA)
- Java进阶10 内存管理与垃圾回收
- Java关键字final、static使用总结
- java装饰模式
- 浅析Java中的final关键字
- Java进阶09 事件响应
- Java抽象类与接口的区别
- Java线程池
- Java进阶07 嵌套类