Contents
一般异常底层框架包括3部分,异常码,异常日志信息,用户提示信息。这些部分是由 Enum 实现的。如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public enum ExceptionCodeEnum { AUTHENTICATE_FAIL(401, "authenticate fail invalid token", "登录异常"), SHOW_EXCEPTION_INFO_TO_USER(11009, "Display exception messages to the user", "可以预知展示给用户的指定异常"); private Integer code; private String message4Log; private String message4Show; YHJExceptionCodeEnum(Integer code, String message4Log, String message4Show) { this.code = code; this.message4Log = message4Log; this.message4Show = message4Show; } }
|
但这仅仅实现了异常信息的记录和组织形式,并未提供异常信息的处理方式,哪些信息是应该记录日志,哪些信息应该提示给用户,如此一来,需要提供操作方法。
在 java 面向对象编程中,我们往往在接口中定义行为,行为意味着公共方法。由此,我们定义了一套操作日志的行为:
1 2 3 4 5 6 7 8 9 10
| public interface ExceptionCode { Integer getCode(); String getMessage4Log(); String getMessage4Show(); }
|
通过上文提到的 enum 实现该接口,我们就可以在 enum 中定义、操作日志信息。
到这,我们定义好了底层异常框架,相当于我们现在已经有了轮子,那怎么拼装成车的一部分呢?
我们真正使用的并不是 enum ,而是显示定义的 exception,以下是他的面纱:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public class YHJException extends RuntimeException { private YHJExceptionCode yhjExceptionCodeAction; private String otherMsg; private String msgOnly4Log; private Integer theThirdCode; private String theThirdMessage4Log; private String theThirdMessage4Show; private String where; private String msg; }
|