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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月22日 01时27分43秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
如何在Apache JIRA中搜索issue
2019-04-30
scrapy 排错记录
2019-04-30
ACM路上的一大失误
2019-04-30
HDOJ2049 不容易系列之(4)——考新郎
2019-04-30
CodeForces 248B - Chilly Willy - 找规律
2019-04-30
POJ-2418 Hardwood Species(Trie树)(map)
2019-04-30
HDU-4300 Clairewd’s message + 4333(扩展KMP)
2019-04-30
HDU 1592 Half of and a Half(高精度)
2019-04-30
POJ-3304 Segments(计算几何)
2019-04-30
UVA-11538 Chess Queen(数学)
2019-04-30
UVA-11401 Triangle Counting(数学优化)
2019-04-30
Codeforces Round #369 (Div. 2)
2019-04-30
UVA 11426 GCD - Extreme (II)(欧拉函数)
2019-04-30
HDU-2838 Cow Sorting(树状数组)
2019-04-30
POJ-2299 Ultra-QuickSort(树状数组)(离散化)
2019-04-30
基于SSM的兼职论坛系统的设计与实现
2019-04-30
基于java的图书管理系统的设计与实现
2019-04-30
基于java的SSM框架理财管理系统的设计与实现
2019-04-30