SpringBoot中制作自定义全局异常

chanchaw 2018-10-24 09:10:28
使用Eclipse制作的SpringBoot项目,打算制作个处理全局异常的类,下面先看该类处于不对的位置时没生效


如上图,处理全局异常的类是GlobalExceptionHandler,当它在包com.ccSoft.common下时该类没有起作用
但将其位置移动到下图的包中就会生效:



可以看到,当该类处于常规的controller包下时就生效了。

问题:
1. 只有在com.ccSoft.sbgpm.controller下才能生效?如果我就想把类GlobalExceptionHandler放到包
com.ccSoft.common下运行呢,要怎么做?

2. 看上图中的类GlobalExceptionHandler的方法myExceptionHandler由于没有注解@ResponseBody,只能显示
出已经做好的exception.jsp异常页面,如果我要返回json数据就要添加注解@ResponseBody,那么问题来了,
如果我要视情况而定呢,当请求获取到的是json数据时就返回json异常,如果请求返回的是页面时就返回页面
异常,那么这个myExceptionHandler要怎么?
...全文
554 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuan.ye 2018-10-29
  • 打赏
  • 举报
回复
springboot 存在执行顺序问题,启动类需要放在前面。
咸哼酒家 2018-10-29
  • 打赏
  • 举报
回复
@ControllerAdvice拦截异常默认在error情况下
你放在 com.ccSoft.sbgpm.controller 下面能生效,是项目启动后扫描到了这个包下的文件
要放在指定的com.ccSoft.common下,可以在类同步加上注解 @Configuration,执行的方法加上@Bean
但是一般不需要呀,
定义好了类,遇到错误的地方直接抛出,写两个方法 一个有@ResponseBody,一个没

throw new GlobalExceptionHandler("4044", " XX操作错误描述");


67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧