All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.meteor.common.exception.ServiceException Maven / Gradle / Ivy

package cn.meteor.common.exception;// Copyright (C), Created on 2021-04-03

import cn.meteor.common.enums.ResultType;
import lombok.Getter;
import org.slf4j.Logger;

import java.util.function.Supplier;

/**
 * 服务通用异常
 *
 * @author ths
 * @since 1.0.0
 */
public class ServiceException extends RuntimeException implements Supplier {

	/** 错误枚举 */
	@Getter
	private ResultType resultEnum;
	/** 错误编码 */
	@Getter
	private int code;

	/**
	 * 仅包含message, 没有cause, 也不记录栈异常, 性能最高
	 *
	 * @param resultEnum 返回的code统一管理
	 */
	public ServiceException(ResultType resultEnum) {
		this(resultEnum.getMessage(), false);
		this.resultEnum = resultEnum;
		this.code = resultEnum.getCode();
	}

	/**
	 * 仅包含message, 没有cause, 也不记录栈异常, 性能最高
	 *
	 * @param code    错误编码
	 * @param message 错误信息
	 */
	public ServiceException(int code, String message) {
		this(message, false);
		this.code = code;
	}

	/**
	 * 仅包含message, 没有cause, 也不记录栈异常, 性能最高
	 *
	 * @param message 异常的描述信息
	 */
	public ServiceException(String message) {
		this(message, false);
	}

	/**
	 * 仅包含message, 没有cause, 也不记录栈异常, 性能最高
	 *
	 * @param log     日志
	 * @param message 异常的描述信息
	 * @param e 异常类
	 * @return ServiceException
	 */
	public static ServiceException log(Logger log, String message, Exception e) {
		log.error(message, e);
		return new ServiceException(message);
	}

	/**
	 * 包含message, 可指定是否记录异常
	 *
	 * @param message          异常的描述信息
	 * @param recordStackTrace 否生成栈追踪信息
	 */
	private ServiceException(String message, boolean recordStackTrace) {
		super(message, null, false, recordStackTrace);
	}

	/**
	 * 包含message和cause, 会记录栈异常
	 *
	 * @param message 异常的描述信息
	 * @param cause   异常
	 */
	public ServiceException(String message, Throwable cause) {
		super(message, cause, false, true);
	}

	@Override
	public ServiceException get() {
		return this;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy