springboot简单的异常处理例子

这篇具有很好参考价值的文章主要介绍了springboot简单的异常处理例子。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. ExceptionHandler仅仅处理当前controller的Exception

@RestController

@RequestMapping("/ex")

public class ExController {

@GetMapping("thex")

public String throwEx() throws Exception {

    throw new Exception("exception thrown from ExController.throwEx");

}

@GetMapping("fnfex")

public String FileNotFound() throws Exception {

    throw new FileNotFoundException("FileNotFoundException thrown from ExController.throwEx");

}

@ExceptionHandler(FileNotFoundException.class)

public String exHandler(Exception e) {

  System.out

 .println("==================ExController.exHandler===================================================");

  e.printStackTrace();

  return e.getMessage() + " from ExController.exHandler";

}

}

2.@ControllerAdvice

用以定义全局异常处理,当controller自己的@ExceptionHandler无法处理时,就交给全局的@ControllerAdvice 中定义的@ExceptionHandler,

@ExceptionHandler methods in @ControllerAdvice can be used to handle exceptions from any @Controller or any other handler.

@ControllerAdvice(annotations = { Controller.class, RestController.class })

public class AdController {

@ResponseBody

@ExceptionHandler(Exception.class)

public Map errorHandler(Exception ex) {

Map errorMap = new HashMap();

errorMap.put("msg", ex.getMessage()+" from AdController");

System.out.println("---------------in AdController.errorHandler ");

return errorMap;

}

@ExceptionHandler(IOException.class)

public Map errorHandler2(IOException ex,, HttpServletRequest request) {

.....

}

@ExceptionHandler(FileNotFoundException.class)

public Map errorHandler3(FileNotFoundException ex) {

.....

}

}

3.BasicErrorController

BasicErrorController用来处理前两个处理不了的Exception

@Slf4j

@RestController

public class ExAdController extends BasicErrorController {

public ExAdController(ErrorProperties ep) {

super(new DefaultErrorAttributes(),ep);

}

@Override

@RequestMapping(value = "", produces = {MediaType.APPLICATION_JSON_VALUE})

public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {

// 获取错误信息

Map<String, Object> body = getErrorAttributes(request, getErrorAttributeOptions(request, MediaType.ALL));

HttpStatus status = getStatus(request);

String code = body.get("status").toString();

String message = body.get("message").toString();

String trace="";

if(this.getErrorProperties().getIncludeStacktrace()==IncludeAttribute.ALWAYS) {

Object sb=body.get("trace");

trace=sb.toString();

}

return new ResponseEntity(message+" dealt by ExAdController \r\n "+trace , HttpStatus.OK);

}

}

在1中处理不了的Exception会在BasicErrorController 进行处理

-----------------------------------------------------------------------------------------------------------------------------------------------

@ControllerAdvice("org.example.controllers")
@ControllerAdvice(assignableTypes = {ControllerInterface.class, AbstractController.class})
@ControllerAdvice(annotations = RestController.class)文章来源地址https://www.toymoban.com/news/detail-434760.html

到了这里,关于springboot简单的异常处理例子的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot全局异常处理和自定义异常处理

    在spring项目中,优雅处理异常,好处是可以将系统产生的全部异常统一捕获处理,自定义的异常也由全局异常来捕获,如果涉及到validator参数校验器使用全局异常捕获也是较为方便。 GlobalExceptionHandler类: 自定义异常CustomException类: 通用返回类:AjaxResult 枚举类ResultCodeEnum:

    2024年02月04日
    浏览(32)
  • SpringBoot 全局异常统一处理:BindException(绑定异常)

    在Spring Boot应用中,数据绑定是一个至关重要的环节,它负责将HTTP请求中的参数映射到控制器方法的入参对象上。在这个过程中如果遇到问题,如参数缺失、类型不匹配或验证失败等,Spring MVC将会抛出一个 org.springframework.validation.BindException 异常。本文将深入解析 BindExceptio

    2024年01月18日
    浏览(29)
  • SpringBoot异常处理(Whitelabel Error Page和自定义全局异常处理页面)和整合ajax异常处理

    SpringBoot默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicErrorController 来处理/error 请求,然后跳转到默认显示异常的页面来展示异常信息 自定义该页面显示内容

    2024年01月16日
    浏览(37)
  • SpringBoot全局异常处理源码

    今天这里叙述的全局异常处理是SpringBoot在Servlet场景下的处理机制,重点是 Servlet 模式,当然 WEBFLUX 今天不做过多描述,SpringBoot2.2.x以后引入的一种响应式web开发,在SpringBoot启动类中可以看到: deduceFromClasspath 方法: 既然是SringBoot的webServlet场景,自然不可以放过的就是 Dis

    2024年02月07日
    浏览(33)
  • SpringBoot 异常处理机制

    SpringBoot中异常处理的流程图 在SpringBoot项目中,如果业务逻辑发生了异常,则首先看发生异常的类中有没有@ExceptionHandle能处理,如果能,则执行方法进行处理,如果没有,则去找全局的@ControllerAdvice注解,进行异常处理,如果还是不能处理,则继续看SpringMVC的异常处理机制能

    2024年02月16日
    浏览(27)
  • SpringBoot异常处理

    SpringBoot默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicErrorController 来处理/error 请求,然后跳转到默认显示异常的页面来展示异常信息 如 果我 们 需 要 将 所

    2024年01月23日
    浏览(23)
  • springboot优雅处理异常

    使用全局异常前: controller层通篇的try-catch以及大量重复的代码来捕获在service层抛出的异常 使用全局异常后: 只需要增加一个全局异常类,里面设置好要捕获的异常以及处理方式,就可以了,针对不通用的异常处理可以使用try-catch 全局异常设置: 其中BusinessException 是自定义

    2024年02月12日
    浏览(28)
  • SpringBoot全局异常页面处理学习

    首先我们先在控制器中写一个异常,默认情况下我们的SpringBoot异常页面是这个样子的。 示例代码如下:  一、自定义静态异常页面 自定义静态异常页面,我们可以分成两种方式,第一种就是使用HTTP状态码来命名页面,例如404.html,403.html,500html等。另一种就是直接定义一个4

    2024年02月09日
    浏览(37)
  • SpringBoot 异常处理的最佳实践

    在 Web 开发中,异常处理是非常重要的一环。在 SpringBoot 框架中,异常处理方式有很多种,但是如何选择最佳实践呢?本文将介绍 SpringBoot 异常处理的最佳实践,并附带代码示例。 异常处理的最佳实践包括以下几个方面: 统一异常处理 在 SpringBoot 中,我们可以使用 @Controll

    2024年02月10日
    浏览(44)
  • springboot 统一异常处理 + 日志记录

          在项目的开发中,在某些情况下,比如非业务的操作,日志记录,权限认证和异常处理等。我们需要对客户端发出的请求进行拦截,常用的API拦截方式有Fliter,Interceptor,ControllerAdvice以及Aspect。先简单介绍一下不同的拦截方式。 可以获得Http原始的请求和响应信息,

    2023年04月17日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包