异常处理规范
Posted wanghaichao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理规范相关的知识,希望对你有一定的参考价值。
1、 Throwable是Java中所有错误和异常的超类。 error是所有错误的超类,这些错误并不意味着需要被应用程序所捕获。捕获Throwable或Error也将捕获OutOfMemoryError和InternalError,应用程序不应尝试恢复这些错误。只能捕获异常及其子类。
2、 定义时区分unchecked / checked 异常,避免直接抛出new RuntimeException(),更不允许抛出Exception或者Throwable,应使用有业务含义的自定义异常。末尾贴上自定义的异常处理代码。
3、 不同的一场类型会影响业务走向,所以我一般都是在service这一层统一处理收敛异常。但是在有事务的情况下,我是会将异常抛出到控制层做处理的,不然可能会影响事务的回滚。总结就是:存在事务,抛到控制层用aop作统一处理,如果不存在事务,统一在service层处理,这样方便一些。
public class UserException extends RuntimeException{
private String errorCode;
private String errorMessage;
private boolean forceCatch = false;
public UserException(){
}
public UserException(String errorMessage){
super(errorMessage);
this.errorMessage = errorMessage;
}
public UserException(ResultEnum resultEnum){
super(resultEnum.getMessage());
this.errorCode = resultEnum.getCode();
this.errorMessage = resultEnum.getMessage();
}
public UserException(String errorCode,String errorMessage){
super(errorMessage);
this.errorCode = errorCode;
this.errorMessage = errorMessage;
}
public UserException(String errorMessage,Throwable throwable){
super(errorMessage,throwable);
this.errorMessage = errorMessage;
}
public UserException(String errorMessage,Throwable throwable,boolean forceCatch){
super(errorMessage,throwable);
this.errorMessage = errorMessage;
this.forceCatch = forceCatch;
}
public UserException(String errorCode,String errorMessage,Throwable throwable){
super(errorMessage,throwable);
this.errorCode = errorCode;
this.errorMessage = errorMessage;
}
public UserException(String errorCode,String errorMessage,Throwable throwable,boolean forceCatch){
super(errorMessage,throwable);
this.errorCode = errorCode;
this.errorMessage = errorMessage;
this.forceCatch = forceCatch;
}
public String getErrorCode() {
return errorCode;
}
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public boolean isForceCatch() {
return forceCatch;
}
public void setForceCatch(boolean forceCatch) {
this.forceCatch = forceCatch;
}
}
以上是关于异常处理规范的主要内容,如果未能解决你的问题,请参考以下文章