springboot中自定义异常以及定制异常界面实现过程解析

 更新时间:2019年09月26日 14:39:24   作者:shun-w  
这篇文章主要介绍了springboot中自定义异常以及定制异常界面实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

不多说废话,直接进入主菜!!

步骤:

1.搭建SpringBoot的开发环境,略(有不会的可以私信我)。

2.编写一个自定义异常,自定义异常需要继承RuntimeException。写一个构造函数,并调用父类保存异常信息。

public class MyException extends RuntimeException {
  public MyException(String massage) {
    super(massage);
  }
}

3.编写一个控制器,用于抛出异常。当请求参数param=aa时抛出异常,否则不抛出异常。

@Controller
public class MyController {
  @ResponseBody
  @RequestMapping("/exception")
  public String ee(String param){
    if(param.equals("aa")){
      throw new MyException("抛出自定义异常");
    }
    return "没有抛出异常";
  }
}

当控制器抛出自定义异常时,这是服务器会发生状态码为500的错误。springboot自带的异常界面不是很友好,我们可以定制一个异常界面用于显示异常信息,看下一步骤。

4.定制自定义异常处理界面。springboot自动配置了视图解析器,我们可以编写一个500.html放在classpath:tempaltes/error目录下。

500.html代码如下(用的是thymeleaf渲染):

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
status: [[${status}]] <br>
timestamp: [[${timestamp}]] <br>
message: [[${message}]] <br>
exception: [[${exception}]] <br>
</body>
</html>

代码已经编写完毕,来看看效果吧!

当我们访问 http://localhost/exception?param=aa时抛出异常,结果如下:

访问 http://localhost/exception?param=bb,不会抛出异常,结果如下:

** 举一反三:在用户管理系统中,我们可以自定义用户不存在异常类,当查询某个不存在的用户时,让控制器抛出用户不存在异常,并跳转到一个友好的提示界面。

抢票系统,当用户购买的票已经卖完,我们可以抛出一个自定义的票已经没有的异常,并跳转到一个友好的提示界面。 **

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • SpringMVC请求数据详解讲解

    SpringMVC请求数据详解讲解

    Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet,Spring MVC 角色划分清晰,分工明细,本章来讲解SpringMVC如何请求数据
    2022-07-07
  • 一文了解Java Log框架彻底搞懂Log4J,Log4J2,LogBack,SLF4J

    一文了解Java Log框架彻底搞懂Log4J,Log4J2,LogBack,SLF4J

    本文主要介绍了一文了解Java Log框架彻底搞懂Log4J,Log4J2,LogBack,SLF4J,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Java实现冒泡排序算法及对其的简单优化示例

    Java实现冒泡排序算法及对其的简单优化示例

    这篇文章主要介绍了Java实现冒泡排序算法及对其的简单优化示例,冒泡排序的最差时间复杂度为O(n^2),最优时间复杂度为O(n),存在优化的余地,需要的朋友可以参考下
    2016-05-05
  • Java使用观察者模式实现气象局高温预警功能示例

    Java使用观察者模式实现气象局高温预警功能示例

    这篇文章主要介绍了Java使用观察者模式实现气象局高温预警功能,结合完整实例形式分析了java观察者模式实现气象局高温预警的相关接口定义、使用、功能操作技巧,并总结了其设计原则与适用场合,具有一定参考借鉴价值,需要的朋友可以参考下
    2018-04-04
  • Redis内存数据库示例分析

    Redis内存数据库示例分析

    Redis本身的内容比较复杂。如果你上来,你应该研究一个细节点,比如连接池和数据结构。虽然可以直接了解某一点的详细来源内容,甚至尽快解决一些意外,但是容易淹没在失眠的细节中,整体控制不了Redis
    2022-12-12
  • Spring Boot + Kotlin整合MyBatis的方法教程

    Spring Boot + Kotlin整合MyBatis的方法教程

    前几天由于工作需要,便开始学习了kotlin,java基础扎实学起来也还算比较快,对于kotlin这个编程语言自然是比java有趣一些,下面这篇文章主要给大家介绍了关于Spring Boot + Kotlin整合MyBatis的方法教程,需要的朋友可以参考下。
    2018-01-01
  • Java并发编程之ReadWriteLock读写锁的操作方法

    Java并发编程之ReadWriteLock读写锁的操作方法

    这篇文章主要介绍了Java并发编程之ReadWriteLock读写锁的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • mybatis如何返回某列的最大值

    mybatis如何返回某列的最大值

    这篇文章主要介绍了mybatis如何返回某列的最大值操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java中并行执行任务的多种方式

    Java中并行执行任务的多种方式

    在Java编程中,经常会遇到需要并行执行任务的情况,特别是在处理大量数据或者需要异步处理的场景下,本文将介绍几种常用的并行执行任务的方式,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-04-04
  • Request与Session的存值取值操作

    Request与Session的存值取值操作

    这篇文章主要介绍了Request与Session的存值取值操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07

最新评论