效果区:

 代码区:

package com.wls.integrateplugs.exception.dto;

public class ErrorInfo<T> {

    public static final Integer OK = 200;
public static final Integer ERROR = 500; private Integer code;
private String message;
private String url;
private T data; public String getUrl() {
return url;
} public void setUrl(String url) {
this.url = url;
} public static Integer getOK() {
return OK;
} public static Integer getERROR() {
return ERROR;
} public Integer getCode() {
return code;
} public void setCode(Integer code) {
this.code = code;
} public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
} public T getData() {
return data;
} public void setData(T data) {
this.data = data;
} }

  

package com.wls.integrateplugs.exception;

import com.wls.integrateplugs.mvc.enums.RespEnum;

/**
* Created by wls on 2017/8/7.
*/
public class MyException extends RuntimeException {
private Integer code; public MyException() {
} public MyException(RespEnum respEnum) {
super(respEnum.getMsg());
this.code = respEnum.getCode();
} public Integer getCode() {
return code;
} public void setCode(Integer code) {
this.code = code;
}
}

  

package com.wls.integrateplugs.exception.controller;

import com.wls.integrateplugs.exception.MyException;
import com.wls.integrateplugs.mvc.enums.RespEnum;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
@RequestMapping(value = "/exception")
public class ExceptionController {
@RequestMapping("/html")
public String hello() throws Exception {
throw new Exception("发生错误");
} @RequestMapping("/json")
public String json() throws MyException {
throw new MyException(RespEnum.UNKNOW_CODE);
}
}

  

package com.wls.integrateplugs.exception.handle;

import com.wls.integrateplugs.exception.MyException;
import com.wls.integrateplugs.exception.dto.ErrorInfo;
import com.wls.integrateplugs.mvc.util.http.RespUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; /**
* Created by wls on 2017/8/7.
*/
@ControllerAdvice
public class ExceptionHandle { Logger logger = LoggerFactory.getLogger(ExceptionHandle.class); /*@ExceptionHandler(value = Exception.class)
@ResponseBody
public RespUtil handle(Exception e){
// synchronized ()
if(e instanceof MyException){
MyException myException = (MyException) e;
return RespUtil.error(myException.getCode(),myException.getMessage());
}else{
logger.info("【异常信息】:{}",e);
return RespUtil.error(-1,"未知错误!");
}
}*/ @ExceptionHandler(value = Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
ModelAndView mav = new ModelAndView();
mav.addObject("exception", e);
mav.addObject("url", req.getRequestURL());
mav.setViewName("error");
return mav;
} @ExceptionHandler(value = MyException.class)
@ResponseBody
public ErrorInfo<String> jsonErrorHandler(HttpServletRequest req, MyException e) throws Exception {
ErrorInfo<String> r = new ErrorInfo<>();
r.setMessage(e.getMessage());
r.setCode(ErrorInfo.ERROR);
r.setData("Some Data");
r.setUrl(req.getRequestURL().toString());
return r;
} }

  

<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<head lang="en">
<meta charset="UTF-8" />
<title>统一异常处理</title>
</head>
<body>
<h1>Error Handler</h1>
<div th:text="${url}"></div>
<div th:text="${exception.message}"></div>
</body>
</html>

  

Spring Boot☞ 统一异常处理的更多相关文章

  1. Spring Boot统一异常处理实践

    摘要: SpringBoot异常处理. 原文:Spring MVC/Boot 统一异常处理最佳实践 作者:赵俊 前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是一件棘手的事情, 对于很多 ...

  2. spring boot 统一异常处理

    需求源自于任何一个业务的编写总会有各种各样的条件判断,需要时时手动抛出异常,又希望让接口返回友好的错误信息. spring boot提供的帮助是自动将异常重定向到路由为/error的控制器 但是我们又 ...

  3. Spring Boot统一异常处理方案示例

    一.异常处理的原则 1.调用方法的时候返回布尔值来代替返回null,这样可以 NullPointerException.由于空指针是java异常里最恶心的异常. 2. catch块里别不写代码.空ca ...

  4. Spring MVC 统一异常处理

    Spring MVC 统一异常处理 看到 Exception 这个单词都心慌 如果有一天你发现好久没有看到Exception这个单词了,那你会不会想念她?我是不会的.她如女孩一样的令人心动又心慌,又或 ...

  5. 编程小白入门分享三:Spring AOP统一异常处理

    Spring AOP统一异常处理 简介 在Controller层,Service层,可能会有很多的try catch代码块.这将会严重影响代码的可读性."美观性".怎样才可以把更多 ...

  6. Spring Boot全局异常处理

    本文为大家分享了Spring Boot全局异常处理,供大家参考,具体内容如下 1.后台处理异常 a.引入thymeleaf依赖 <!-- thymeleaf模板插件 --> <dep ...

  7. Spring Boot 统一返回结果及异常处理

    在 Spring Boot 构建电商基础秒杀项目 (三) 通用的返回对象 & 异常处理 基础上优化.调整 一.通用类 1.1 通用的返回对象 public class CommonReturn ...

  8. spring boot 统一接口异常返回值

    创建业务 Exception 一般在实际项目中,推荐创建自己的 Exception 类型,这样在后期会更容易处理,也比较方便统一,否则,可能每个人都抛出自己喜欢的异常类型,而造成代码混乱 Servic ...

  9. 使用Spring MVC统一异常处理实战

    1 描述 在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的.不可预知的异常需要处理.每个过程都单独处理异常,系统的代码耦合 ...

随机推荐

  1. eclipse Mars(4.5.2)安装pydev后不出现

    一.环境 windows 7 64bit eclipse 4.5.2 pydev jdk7u55 二.安装步骤 1. 安装JDK eclipse依赖于java环境,所以需要安装java运行环境JRE. ...

  2. (转)Inno Setup入门(九)——修改安装过程中的文字显示

    本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250837 前面说到过可以使用不用的语言文件实现不同的显示方式,方 ...

  3. Centos6-7安装Python3.5以及SSL的编译安装,识别https

    Python3中无法导入ssl模块的解决办法 如果你发现在python3脚本运行过程中发现涉及到ssl模块都无法运行的情况下.那么需要进行如下步骤 第一步: yum install openssl o ...

  4. linux 下查找文件或者内容常用命令

    转自:http://www.cnblogs.com/sunleecn/archive/2011/11/01/2232210.html whereis <程序名称>查找软件的安装路径-b 只 ...

  5. Code blocks调试教程

    特别声明:本教程已转移至百度经验:https://jingyan.baidu.com/article/6b182309939a87ba58e159bf.html 一.题外话 之前一直想用Code bl ...

  6. Oracle ASM操作管理

    查看ASM磁盘情况 SQL> select group_number,disk_number,mount_status,header_status,mode_status,state,failg ...

  7. 关于微信支付URL未注册其中的坑THINKPHP5

    1 微信支付是区分大小写的 TP有的URL 会默认转换 http://ams.###.com/index/Pay/wechat/order_number/ 会被解析 http://ams.###.co ...

  8. mongodb(五)

    mongoDB 启动配置祥讲导出,导入,运行时备份Fsync锁,数据修复用户管理,安全认证 1.启动项 mongod --help 1.1利用config配置文件来启动数据库改变端口为8888 mon ...

  9. fileinput模块可以循环一个或多个文本文件的内容

    fileinput模块可以循环一个或多个文本文件的内容. [默认格式] fileinput.input (files=None, inplace=False, backup='', bufsize=0 ...

  10. avalon1.3的新特性预览

    avalon1.2的性能优化风暴很快就告一段落,入职也快一个月了,许多乱七八糟的事也少了下来,估计未来一个月会有许多好东呈现给大家. 首先是一个性能检测工具.由于MVVM是将原本由人脑干的事,转到各种 ...