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

2017 年 8 月 1 日 开源中国 DLQ丁

点击图片报名参加广州&珠海源创会

一、构建测试代码


1

新建MAVEN项目

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


2

编写pom.xml引入包

编写pom配置引入jar包

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


3

新建一个controller类

包名:com.springboot.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类

包名:package com.springboot.controller;

类名:TestGlobalController


2

编写全局异常类

包名:com.springboot.controller.exception

类名: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(basePackages={"com.springboot.controller"})

只捕捉com.springboot.controller包中的异常

@ControllerAdvice(basePackageClasses={TestController.class})

只捕捉TestController.class中的异常

@ControllerAdvice(assignableTypes={TestController.class})

只捕捉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注解的类的异常

(5)测试

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

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


更多干货请前往公众号菜单栏“读我”->“干货分享”查看。



推荐阅读

MySQL 死锁与日志二三事

2017 年 7 月 Web 服务器调查报告,Nginx 的数量稳步增长

我写了一门编程语言,你也可以!

高性能 React: 3 个提升 APP 速度的新工具

点击“阅读原文”查看更多精彩内容

登录查看更多
0

相关内容

【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
160+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【新书】傻瓜式入门深度学习,371页pdf
专知会员服务
183+阅读 · 2019年12月28日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
局部人脸识别的动态特征匹配(文末附文章及源码地址)
计算机视觉战队
9+阅读 · 2019年9月1日
C# 10分钟完成百度人脸识别
DotNet
3+阅读 · 2019年2月17日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
用 Python 和 OpenCV 检测图片上的条形码
Python开发者
5+阅读 · 2018年1月20日
贝叶斯网络入门
论智
15+阅读 · 2017年11月19日
Do RNN and LSTM have Long Memory?
Arxiv
19+阅读 · 2020年6月10日
AdarGCN: Adaptive Aggregation GCN for Few-Shot Learning
Arxiv
8+阅读 · 2019年5月20日
Arxiv
7+阅读 · 2018年12月26日
Arxiv
5+阅读 · 2018年3月6日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
160+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【新书】傻瓜式入门深度学习,371页pdf
专知会员服务
183+阅读 · 2019年12月28日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
相关资讯
局部人脸识别的动态特征匹配(文末附文章及源码地址)
计算机视觉战队
9+阅读 · 2019年9月1日
C# 10分钟完成百度人脸识别
DotNet
3+阅读 · 2019年2月17日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
用 Python 和 OpenCV 检测图片上的条形码
Python开发者
5+阅读 · 2018年1月20日
贝叶斯网络入门
论智
15+阅读 · 2017年11月19日
相关论文
Top
微信扫码咨询专知VIP会员