/* * Copyright (c) 2018. * 项目名称:auth-gateway-backend * 文件名称:AbstractException.java * Date:18-3-21 上午10:15 * Author:boni */ package com.irrigation.icl.exception; import com.irrigation.icl.exception.code.ErrorCode; import org.springframework.http.HttpStatus; import java.io.PrintWriter; import java.io.StringWriter; public abstract class AbstractException extends RuntimeException { private static final long serialVersionUID = 1L; private final HttpStatus status; private final int code; private final String message; private final String detailMessage; public AbstractException(HttpStatus status, ErrorCode errorCode) { this.status = status; this.code = errorCode.getCode(); this.message = errorCode.getMessage(); this.detailMessage = errorCode.getDetailMessage(); } public AbstractException(HttpStatus status) { this.status = status; code = 0; message = null; detailMessage = null; } public AbstractException(HttpStatus status, ErrorCode errorCode, Throwable cause) { super(cause); this.status = status; this.code = errorCode.getCode(); this.message = errorCode.getMessage(); detailMessage = (cause.getMessage() != null ? cause.getMessage() : "") + toStackTrace(cause); } private String toStackTrace(Throwable e) { StringWriter errorStackTrace = new StringWriter(); e.printStackTrace(new PrintWriter(errorStackTrace)); return errorStackTrace.toString(); } public HttpStatus getStatus() { return status; } public ErrorCode getCode() { return new ErrorCode(code, message, detailMessage); } @Override public String getMessage() { return message; } public String getDetailMessage() { return detailMessage; } }