SpringBoot 入门——局部与全局的异常处理

一、构建测试代码

1

新建MAVEN项目

打开IDE—新建Maven项目—构建一个简单Maven项目

2

编写pom.xml引入包

编写pom配置引入jar包

注:引入完毕后可能项目会报红叉,更新maven即可

3

新建一个controller类

类名:TestController

4

新建一个Application类

包名:com.springboot

类名:TestController

然后运行程序

5

测试

输入地址:http://localhost:8080/test/hello1

如果显示:hello1,则测试成功

测试代码编写完成

二、局部异常处理

对TestController类进行操作

1

创造异常点

如果设置一个变量=整数/0,则会发生ArithmeticException异常

在TestController中加入除0异常点

2

编写异常处理方法

在TestController中加入异常处理方法

3

测试

输入地址:http://localhost:8080/test/hello1

如果显示:发生了除0异常,则测试成功

三、全局异常处理

1

创建一个新的Cpntroller类

类名:TestGlobalController

2

编写全局异常类

类名:GlobalDefaultExceptionHandler

全局异常处理返回字符串

.

全局异常处理返回JSON

.

全局异常处理返回JSP

.

注:需要配置一下才能支持jsp

需要在pom添加JSP的支持

.

需要配置application.properties

添加application.properties文件,然后往其中写入

.

需要添加jsp文件

添加JSP,放置在src/main/webapp/WEB-INF目录下

3

全局异常类应用范围设置

@ControllerAdvice简介

在spring 3.2中,新增了@ControllerAdvice 注解可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@RequestMapping中。

这里我们全局异常只应用到@ExceptionHandler

设置@ControllerAdvice应用范围

设置了@ControllerAdvice应用范围,即就设置了异常类的应用范围

@ControllerAdvice的范围有:

basePackages:应用在xx包

basePackageClasses:应用在xx类

assignableTypes:应用在加了@Controller的类

annotations:应用在带有xx注解的类或者方法

≥简单用法例子:

@ControllerAdvice(basePackageClasses=)

只捕捉TestController.class中的异常

@ControllerAdvice(assignableTypes=)

只捕捉TestController.class中的异常

@ControllerAdvice(annotations=TestException.class)

只捕捉带有@TestException注解的类

上面四个注解一个应用包,然后的两个用在类,而最后一个只应用于带有XX注解的类

3.讲讲应用在注解怎么写

(1)创建一个注解类

注:关于注解类的简说请看:

https://my.oschina.net/u/3523885/blog/1489959

(2)将注解加到TestController类

加入@TestException注解

(3)TestController类不加注解

(4)设置异常类只捕捉带有@TestException注解的类的异常

本文来自企鹅号 - 一个小小的码农媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专注研发

IDEA环境下SSM整合------注解开发

3.别的好像没啥介绍了,基本步骤就这些,数据流程在上面,注解介绍在下面。 基本注解介绍 @Controller   负责注册一个控制器,Singlet...

35520
来自专栏JavaQ

深入理解Spring之九:DispatcherServlet初始化源码分析

DispatcherServlet是SpringMVC的核心分发器,它实现了请求分发,是处理请求的入口,本篇将深入源码分析它的初始化过程。 首先,从Dispat...

39550
来自专栏个人分享

Spark Netty与Jetty (源码阅读十一)

  spark呢,对Netty API又做了一层封装,那么Netty是什么呢~是个鬼。它基于NIO的服务端客户端框架,具体不再说了,下面开始。

18740
来自专栏JetpropelledSnake

Python入门之Python中的logging模块

基本用法 下面的代码展示了logging最基本的用法。 import logging import sys # 获取logger实例,如果参数为空则返回ro...

29880
来自专栏WindCoder

WebService入门初使用(一)创建WebService服务

本文所用WebService基于maven-ssm-cxf,此处暂时仅使用做记录,后期看心情适当整理相关知识点。

73710
来自专栏一个会写诗的程序员的博客

Spring FrameWork 5.0 新功能 概览Spring FrameWork 5.0 新功能 概览

整个框架的代码基于java8 通过使用泛型等特性提高可读性 对java8提高直接的代码支撑

9110
来自专栏潇涧技术专栏

Art of Android Development Reading Notes 2

(1)任何一个操作系统都需要有相应的IPC机制,Linux上可以通过命名通道、共享内存、信号量等来进行进程间通信。 (2)Android系统不仅可以使用Bin...

9420
来自专栏微服务生态

玩转EhCache之最简单的缓存框架

Ehcache是一个用Java实现的使用简单,高速,实现线程安全的缓存管理类库,ehcache提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cach...

78440
来自专栏流媒体

cmake用法

示例源码 在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:

14230
来自专栏向治洪

svn错误对照表

#, c-format msgid "Destination '%s' is not a directory" msgstr "目的 “%s” 不是目录" ...

36950

扫码关注云+社区

领取腾讯云代金券