SpringMVC - 14 - 异常处理 Handler(或ResponseStatus或DefaultHandler或SimpleMapping)ExecptionResolver、设置全局异常
发布日期:2021-06-30 17:02:52 浏览次数:2 分类:技术文章

本文共 3316 字,大约阅读时间需要 11 分钟。

文章目录

# 全局异常

package com.cy.myblog.controller.aspect;import javax.servlet.http.HttpServletRequest;import org.apache.shiro.ShiroException;import org.apache.shiro.authc.IncorrectCredentialsException;import org.apache.shiro.authc.LockedAccountException;import org.apache.shiro.authc.UnknownAccountException;import org.apache.shiro.authz.AuthorizationException;import org.springframework.util.StringUtils;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.RestControllerAdvice;import com.cy.myblog.common.ex.ServiceException;import com.cy.myblog.common.vo.JsonResult;import com.cy.myblog.controller.BaseController;import com.cy.myblog.controller.ex.NoLoginException;import com.cy.myblog.controller.ex.PageUnfoundException;import com.cy.myblog.service.ex.ArgumentValidFaildException;import com.cy.myblog.service.ex.DataUnfoundException;import com.cy.myblog.service.ex.DuplicationKeyException;import com.cy.myblog.service.ex.PropertyValidFaildException;import lombok.extern.slf4j.Slf4j;//异常(last) -> view@Slf4j@RestControllerAdvicepublic class GlobalExceptionHandler extends BaseController{
@ExceptionHandler({
ServiceException.class , ShiroException.class}) public JsonResult doExceptionHandle(Throwable e , HttpServletRequest r ) {
log.error("request URL:{} , Exception:{}" ,r.getRequestURL(), e.toString()); //URL 详尽的资源信息 JsonResult j = new JsonResult(); j.setState(FAIL); //shrio 异常 if(e instanceof UnknownAccountException) {
setMessage(j, e,"账户不存在"); }else if(e instanceof LockedAccountException) {
setMessage(j, e, "账户状态异常"); }else if(e instanceof IncorrectCredentialsException) {
setMessage(j, e, "密码不正确"); }else if(e instanceof AuthorizationException) {
setMessage(j, e, "没有此操作权限"); }else //自定义 controller 异常 if(e instanceof NoLoginException) {
setMessage(j, e, "请登录"); }else if(e instanceof PageUnfoundException){
setMessage(j, e, "404 页面找不到了"); }else //自定义 servicer 异常 if(e instanceof ArgumentValidFaildException) {
setMessage(j, e, "参数异常"); }else if(e instanceof DataUnfoundException) {
setMessage(j, e, "数据不存在"); }else if(e instanceof DuplicationKeyException) {
setMessage(j, e, "键值不能重复"); }else if(e instanceof PropertyValidFaildException) {
//校验异常 setMessage(j, e, "校验异常!"); PropertyValidFaildException ex = (PropertyValidFaildException) e; j.setData(ex.getErrors()); } else {
setMessage(j, e, "系统维护中"); log.error("Exception {}" , e.getMessage()); } return j; } /** * 如果没有异常描述,使用默认异常描述 * @param j json 结果串,往message添加异常描述 * @param e 异常 * @param message 默认异常描述 */ private void setMessage(JsonResult j , Throwable e , String message) {
if(StringUtils.isEmpty(e.getMessage())) {
j.setMessage(message); }else{
j.setMessage(e.getMessage()); } } }

# 是什么

在这里插入图片描述

# 通常有什么

在这里插入图片描述

在这里插入图片描述

springboot 中

在这里插入图片描述

##ExceptionHandlerExceptionResolver

开发中,通常都加上 <mvc:annotaion-driven /> 注解,所以,下面重点讲 加注解后 替换的 ExceptionHandlerExceptionResolver

在这里插入图片描述

## ResponseStatusExceptionResolver

在这里插入图片描述

ResponseStatusExceptionResolver
在这里插入图片描述
ResponseStatus
在这里插入图片描述
在这里插入图片描述

写在异常类上

在这里插入图片描述

在这里插入图片描述

写在方法上

在这里插入图片描述

在这里插入图片描述

## DefaultHandlerExceptionResolver

处理特定异常的

在这里插入图片描述
在这里插入图片描述

文章目录

## SimpleMappingExceptionResolver

在这里插入图片描述

error 为
war 工程中, WEB-INF/views/error.jsp

(这里views配置里面改了,)在这里插入图片描述

在这里插入图片描述

debugger

在这里插入图片描述

exceptionAttribute 是属性名

在这里插入图片描述

exceptionAttribute 默认值 是 exception

在这里插入图片描述

在这里插入图片描述

因此,可以在 配置里面 改 异常的名字

在这里插入图片描述
在这里插入图片描述

转载地址:https://lawsssscat.blog.csdn.net/article/details/104349191 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:SpringMVC - 15 - 运行流程
下一篇:SpringMVC - 13 - 自定义拦截器HandlerInterceptor 、多个拦截器下的执行顺序

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月22日 01时27分43秒