平时我们在写代码的时候肯定要进行很多参数验证,最开始的时候我们一般都是这样处理的  如下图  

看起来好像也没什么,但是  如果参数多了呢?你就会看到这样的校验

OMG!!!  有没有感觉稍微有点视觉冲击,虽然这样写的已经很规整了,但是还是不够简单和优雅。

在SpringBoot中,我们可以直接对对象加上@vaild进行参数校验

这样写是不是看起来优雅了很多,没错!我们就是要追求这种 小即美 的感觉!!!!!

虽然这样看起来优雅了很多,但是  还有点问题

当我们进行参数校验的时候   会看到

OMG的! 这一长串又蹦出来了,在页面上弹出来很丑,而且提示不够明确

为什么就不能弹出来message里面的内容呢???

显然   是可以的,不过  这个设计注解的人想给后台更多提示,抛出了更详细的内容,实在是丑了点。

于是为了不写那么丑的代码,我改造了一些网上的代码

@ControllerAdvice
public class ExceptionHandle {
@ExceptionHandler(value = RuntimeException.class)
@ResponseBody
public String handle(RuntimeException e) {
if (e instanceof RuntimeException) {
RuntimeException exception = e;
return exception.getMessage();
} else {
return "未知错误";
}
}

public void exceptionMessage(BindingResult bindingResult) throws SeeingException {
if (bindingResult.hasErrors()) {
String msg = bindingResult.getFieldError().getDefaultMessage();
throw new SeeingException(ErrorCode.BUSINESS_EXCEPTION, msg);
}
}
}
通过上面简单的几行代码我们就可以直接拿到

另外两个参数是公司框架里面的内容,大家可以忽略

这时候只剩下了message里面的内容,不过在使用的时候  需要调用下exceptionMessage方法

还是有些麻烦的,我的想法是可以自定义一个注解,把这部分代码整合进去,有兴趣的可以去试下。

不过我们终于还是达到了目标不是。

论如何优雅的抛出SpringBoot注解的异常的更多相关文章

  1. Android ADT插件更新后程序运行时抛出java.lang.VerifyError异常解决办法

    当我把Eclipse中的 Android ADT插件从21.1.0更新到22.0.1之后,安装后运行程序抛出java.lang.VerifyError异常. 经过调查,终于找到了一个有效的解决办法: ...

  2. ajax请求webservice时抛出终止线程的异常

    请求webservice中以下接口,会抛出异常 {"Message":"正在中止线程.","StackTrace":" 在 Sys ...

  3. PLSQL_Oracle Exception异常分类、异常抛出、异常处理、异常传播(概念)

    2014-06-03 Created By BaoXinjian

  4. MongoDb 抛出"Error retrieving nonce"异常

    MongoDb在读取一个数据时抛出此异常, google之后也是只有源码没有任何相关结果, 考虑到之前同样的Db下不同的Collection没有发现此问题, 对比之后发现出错的url为: mongod ...

  5. List 调用 remove 方法时抛出 java.lang.UnsupportedOperationException 异常原因

    原因 使用 Arrays.asList(arr) 转换的 List 并不能进行 add 和 remove 操作.       Arrays.asList(arr) 返回的类型是 Aarrays$Arr ...

  6. 解决Hibernate validator抛出Ljavax/validation/ParameterNameProvider异常方法

    最近升级CAS Client4.0客户端Spring版本至Spring4.*以上,升级整合hibernate框架时,Hibernate validator 4.3.0.Final使用版本(从Hiber ...

  7. @ConfigurationProperties(prefix = "server-options") 抛出 SpringBoot Configuration Annotation Processor not configured 错误

    说明 spring-boot-configuration-processor 包的作用是自动生成 META-INF/spring-configuration-metadata.json 文件,而这个 ...

  8. windows下安装composer抛出Composer\Downloader\TransportException异常解决办法

    1. 把默认的 secure-http 改成false composer config -g secure-http false 2. 修改配置文件 #修改全局文件(推荐) composer conf ...

  9. LOV抛出值无效的异常

    在选择LOV中的行返回之后,点击提交的时候始终报值无效的异常. 症状:LOV中有值为   XXX项目,XXX项目(一期) 的时候,当你选择XXX项目 再进行提交,老是报出值无效的异常. 解决方式:在页 ...

随机推荐

  1. Java学习的第十天

    1.类方法 实例方法 自定义方法 2.今天使用visio不太会使用,方法覆盖不懂. 3.明天将方法剩余部分学完

  2. Route53导出解析记录

    使用AWS CLI来进行导出 可以参考AWS的官方文档 安装AWS CLI 官方安装aws cli文档 curl "https://awscli.amazonaws.com/awscli-e ...

  3. SpringCloud gateway 过滤

    如果需要获取一张图片但服务器没有过滤图片请求地址时,每次请求图片都需要携带token等安全验证密钥,可到nacos配置网关(gateway)的security配置,可过滤掉你配置的url(可理解为白名 ...

  4. 美团笔试题_ACM最多队伍

    题目: 选择队伍参加ACM比赛,可以选择的人由N+M组成,N代表N个擅长算法的人,M代表M个擅长编程的人,选择要求:每个队伍三个人,每个队伍中至少有一个擅长算法的人,至少有一个擅长编程的人.求可以组成 ...

  5. C/C++模运算(正负整数)

    模运算 模运算:又称为取余运算 正整数的模运算 对于正整数a,b 如果\(a=q\times b+r\)其中\(0\le r < b\) 则有\(a \bmod b=r\)即 \(a\%b=r\ ...

  6. 9.集合set和frozenset冻结集合函数

    集合set set和dict类似,也是一组key的集合,但不存储value.由于key不能重复,所以在set中没有重复的key. 集合中的元素要求是不可变的并且还是唯一的,我们就利用它是唯一来做去重. ...

  7. php判断手机浏览器和pc浏览器

    <?php public function is_mobile(){ // returns true if one of the specified mobile browsers is det ...

  8. 企业网络拓扑RSTP功能实例

    组网图形  RSTP简介 以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路.但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质 ...

  9. WSL2:我在原生的Win10玩转Linux系统

    原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」.一群同频者,一起成长,一起精进,打破认知的局限性. WSL2:我在原生的Win10玩转Li ...

  10. JS之DOM(一)

    一.DOM简介 什么是DOM?简单地说,DOM是是针对HTML和XML文档的一个API,一套对文档的内容进行抽象和概念化的方法. 学习过ORM的同学可能知道ORM是将数据库中的表映射到类,建立一个表和 ...