自定义异常

简介: 自定义异常
@Data@EqualsAndHashCode(callSuper=true)
publicclassOpenRuntimeExceptionextendsRuntimeException {
protectedStringerrorCode="Internal Server Error";
protectedStringmessage="No value present";
protectedintstatus=500;
publicOpenRuntimeException(OpenErrorCodessoErrorCode) {
this(ssoErrorCode, (Object[]) null);
    }
OpenRuntimeException(OpenErrorCodessoErrorCode, Object... params) {
this(ssoErrorCode, null, params);
    }
OpenRuntimeException(OpenErrorCodessoErrorCode, Throwablecause, Object... params) {
this.errorCode=ssoErrorCode.name();
this.status=ssoErrorCode.getStatus();
this.message=ssoErrorCode.getMessage(params);
if (cause!=null) {
initCause(cause);
        }
    }
@OverridepublicStringgetMessage() {
returnmessage;
    }
}

publicinterfaceOpenErrorCode {
/*** description: 获取异常的name** @return {@link String}* @author <a href="mailto:joshualwork@163.com">joshua_liu</a>* @date 2021/4/25 9:11*/Stringname();
/*** description: 响应的状态码** @return {@link int}* @author <a href="mailto:joshualwork@163.com">joshua_liu</a>* @date 2021/4/25 9:12*/intgetStatus();
/*** description:** @param cause  异常对象* @param params 格式化参数* @return {@link OpenRuntimeException}* @author <a href="mailto:joshualwork@163.com">joshua_liu</a>* @date 2021/4/25 9:58*/defaultOpenRuntimeExceptionruntimeException(Throwablecause, Object... params) {
returnnewOpenRuntimeException(this, cause, params);
    }
/*** description:** @param params 格式化参数* @return {@link OpenRuntimeException}* @throws* @author <a href="mailto:joshualwork@163.com">joshua_liu</a>* @date 2021/4/25 10:00*/defaultOpenRuntimeExceptionruntimeException(Object... params) {
returnnewOpenRuntimeException(this, params);
    }
/*** description:** @param cause 异常* @return {@link OpenRuntimeException}* @author <a href="mailto:joshualwork@163.com">joshua_liu</a>* @date 2021/4/25 16:40*/defaultOpenRuntimeExceptionruntimeException(Throwablecause) {
returnnewOpenRuntimeException(this, cause);
    }
/*** description:** @param params 格式化参数* @param locale 地区* @return {@link String}* @author <a href="mailto:joshualwork@163.com">joshua_liu</a>* @date 2021/4/25 9:13*/defaultStringgetMessage(Localelocale, Object... params) {
Stringmessage="NO MESSAGE!!!";
if (locale==null) {
locale=Locale.getDefault();
        }
try {
Stringformatter=Objects.equals("OpenExceptionEnum", this.getClass().getSimpleName()) ?"META-INF.{0}" : "i18n.exception.{0}";
ResourceBundlebundle=ResourceBundle                    .getBundle(MessageFormat.format(formatter,
this.getClass().getSimpleName()), locale);
message=bundle.getString(this.name());
returnnewMessageFormat(message).format(params);
        } catch (Throwablee) {
if (!(einstanceofMissingResourceException)) {
e.printStackTrace();
            }
message=Objects.isNull(params) ?message : newMessageFormat("{0}").format(params);
returnmessage;
        }
    }
/*** description:** @param params 格式化参数* @return {@link String}* @author <a href="mailto:joshualwork@163.com">joshua_liu</a>* @date 2021/4/25 9:56*/defaultStringgetMessage(Object... params) {
returngetMessage(Locale.getDefault(), params);
    }
}
相关文章
|
弹性计算 JSON 数据可视化
Grafana 10 新特性解读,体验与协作全面提升
Grafana 10 新特性解读:体验与协作全面提升
32412 97
|
7月前
|
开发工具 开发者 iOS开发
testflight上架ipa包-只有ipa包的情况下如何修改签名信息为苹果开发者账户对应的信息-ipa苹果包如何手动改签或者第三方工具改签-优雅草卓伊凡
testflight上架ipa包-只有ipa包的情况下如何修改签名信息为苹果开发者账户对应的信息-ipa苹果包如何手动改签或者第三方工具改签-优雅草卓伊凡
163 20
|
Java Docker 微服务
SpringBoot微服务打包Docker镜像
SpringBoot微服务打包Docker镜像
683 11
|
Ubuntu Linux
在Linux中,如何升级系统内所有已安装软件包?
在Linux中,如何升级系统内所有已安装软件包?
|
SQL 自然语言处理 Linux
探索 Linux 命令:Bison - 一个强大的语法分析器生成器
Bison是Linux下的一个语法分析器生成器,用于将上下文无关文法转换为C代码,简化编译器或解释器开发。它提供性能优化和灵活的语义动作定制,常用于创建解析器,如SQL解析器或自定义脚本语言解释器。通过编写.y文件定义语法规则,使用Bison生成解析器代码,然后集成到项目中,搭配词法分析器如Flex使用。Bison帮助开发者专注于应用逻辑,而非解析器实现。
|
Java
如何自定义异常类
如何自定义异常类
100 0
|
分布式计算 并行计算 算法
【高并发】什么是ForkJoin?看这一篇就够了!
在JDK中,提供了这样一种功能:它能够将复杂的逻辑拆分成一个个简单的逻辑来并行执行,待每个并行执行的逻辑执行完成后,再将各个结果进行汇总,得出最终的结果数据。有点像Hadoop中的MapReduce。 ForkJoin是由JDK1.7之后提供的多线程并发处理框架。ForkJoin框架的基本思想是分而治之。什么是分而治之?分而治之就是将一个复杂的计算,按照设定的阈值分解成多个计算,然后将各个计算结果进行汇总。相应的,ForkJoin将复杂的计算当做一个任务,而分解的多个计算则是当做一个个子任务来并行执行。
6970 0
【高并发】什么是ForkJoin?看这一篇就够了!
|
移动开发 前端开发
ruoyi-nbcio-plus基于vue3的flowable扩展属性的升级修改
ruoyi-nbcio-plus基于vue3的flowable扩展属性的升级修改
282 0
|
JavaScript UED
Vue中的路由懒加载有哪些优缺点?
Vue中的路由懒加载有哪些优缺点?
306 3