当前位置: 首页 > news >正文

长沙的网站建设内衣网站建设推广

长沙的网站建设,内衣网站建设推广,手机网站建设经验,公司网站开发建设什么会计科目全文目录:开篇语**前言****1. Spring Boot 异常处理的基本概念****2. 使用 ExceptionHandler 局部处理异常****示例:局部异常处理****优化建议:****3. 使用 ControllerAdvice 和 RestControllerAdvice 进行全局异常处理****示例:全…

全文目录:

    • 开篇语
    • **前言**
    • **1. Spring Boot 异常处理的基本概念**
    • **2. 使用 `@ExceptionHandler` 局部处理异常**
      • **示例:局部异常处理**
      • **优化建议:**
    • **3. 使用 `@ControllerAdvice` 和 `@RestControllerAdvice` 进行全局异常处理**
      • **示例:全局异常处理**
      • **优化建议:**
    • **4. 自定义异常和异常处理**
      • **示例:自定义异常类**
      • **优化建议:**
    • **5. 优化用户体验:自定义错误响应**
      • **示例:自定义错误响应类**
      • **示例:在异常处理中使用自定义错误响应**
      • **优化建议:**
    • **6. 使用 `@ResponseStatus` 定义 HTTP 状态码**
      • **示例:使用 `@ResponseStatus` 注解**
    • **7. 结论**
    • 文末

开篇语

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

  在开发过程中,异常是不可避免的,尤其是当应用规模越来越大时,异常的管理和处理变得尤为重要。在 Spring Boot 应用中,良好的异常处理不仅能帮助开发者快速定位和修复问题,还能有效优化用户体验。通过对异常的全局捕获和处理,能够使得系统更加健壮,并且为用户提供清晰的错误信息和友好的反馈。

  本文将介绍如何在 Spring Boot 中进行异常处理,涵盖从全局异常捕获到优化用户体验的常用实践。

1. Spring Boot 异常处理的基本概念

在 Spring Boot 中,异常处理主要有以下几种常见方式:

  • 局部异常处理:在控制器(Controller)方法内部处理特定的异常。
  • 全局异常处理:使用 @ControllerAdvice@RestControllerAdvice 注解进行全局异常捕获。
  • 自定义异常:通过创建自定义异常类和异常处理类来处理特定场景的异常。

2. 使用 @ExceptionHandler 局部处理异常

在 Spring Boot 中,你可以在单个控制器类中使用 @ExceptionHandler 注解来捕获和处理异常。这种方式适用于只需要在特定控制器中处理的异常。

示例:局部异常处理

@RestController
public class MyController {@GetMapping("/divide")public int divide(@RequestParam int a, @RequestParam int b) {return a / b;}@ExceptionHandler(ArithmeticException.class)public ResponseEntity<String> handleArithmeticException(ArithmeticException ex) {return new ResponseEntity<>("Error: " + ex.getMessage(), HttpStatus.BAD_REQUEST);}
}

在上面的示例中,当 /divide 路由处理过程中发生 ArithmeticException 异常时,handleArithmeticException 方法将会捕获这个异常并返回一个自定义的错误信息。

优化建议:

局部异常处理适用于单个控制器类,但当异常处理逻辑需要应用于多个控制器时,这种方式就显得不够灵活。因此,推荐使用全局异常处理来统一处理应用中的异常。

3. 使用 @ControllerAdvice@RestControllerAdvice 进行全局异常处理

为了简化全局异常处理,Spring 提供了 @ControllerAdvice@RestControllerAdvice 注解,用于定义全局异常处理类。@RestControllerAdvice@ControllerAdvice@ResponseBody 的结合,适用于处理 RESTful 风格的应用。

示例:全局异常处理

首先创建一个全局异常处理类,使用 @ControllerAdvice 注解:

@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(ArithmeticException.class)public ResponseEntity<String> handleArithmeticException(ArithmeticException ex) {return new ResponseEntity<>("Global Error: " + ex.getMessage(), HttpStatus.BAD_REQUEST);}@ExceptionHandler(Exception.class)public ResponseEntity<String> handleGenericException(Exception ex) {return new ResponseEntity<>("Unexpected Error: " + ex.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);}
}

在这个例子中,GlobalExceptionHandler 捕获了全局范围内的 ArithmeticExceptionException,并返回自定义的错误信息。@ControllerAdvice 可以捕获所有控制器中的异常,因此异常处理逻辑可以集中管理。

优化建议:

全局异常处理的优势是可以统一管理和处理应用中的异常,特别是在开发大型应用时,能够减少代码重复。你可以在此类中捕获各种类型的异常,并进行适当的错误响应。

4. 自定义异常和异常处理

在一些情况下,你可能需要为应用创建自定义异常类,以便针对特定的业务场景进行处理。自定义异常类通常继承 RuntimeExceptionException

示例:自定义异常类

public class ResourceNotFoundException extends RuntimeException {public ResourceNotFoundException(String message) {super(message);}
}

然后,在全局异常处理类中捕获这个自定义异常:

@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(ResourceNotFoundException.class)public ResponseEntity<String> handleResourceNotFoundException(ResourceNotFoundException ex) {return new ResponseEntity<>("Resource Not Found: " + ex.getMessage(), HttpStatus.NOT_FOUND);}
}

优化建议:

使用自定义异常能够明确区分不同类型的错误,并且可以通过返回不同的 HTTP 状态码(如 404、500 等)提供给用户更明确的信息。

5. 优化用户体验:自定义错误响应

当异常发生时,简单的错误消息往往不能提供足够的信息。为了改善用户体验,可以通过返回详细的错误响应体来帮助前端或用户更好地理解错误情况。

示例:自定义错误响应类

public class ErrorResponse {private String message;private int status;private long timestamp;public ErrorResponse(String message, int status) {this.message = message;this.status = status;this.timestamp = System.currentTimeMillis();}// Getters and setters
}

示例:在异常处理中使用自定义错误响应

@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(ResourceNotFoundException.class)public ResponseEntity<ErrorResponse> handleResourceNotFoundException(ResourceNotFoundException ex) {ErrorResponse errorResponse = new ErrorResponse(ex.getMessage(), HttpStatus.NOT_FOUND.value());return new ResponseEntity<>(errorResponse, HttpStatus.NOT_FOUND);}
}

优化建议:

通过自定义错误响应类,可以将更多信息传递给前端。例如,错误消息、状态码和时间戳等信息,这些都有助于前端开发人员调试和处理异常。确保错误信息清晰且易于理解,以改善用户体验。

6. 使用 @ResponseStatus 定义 HTTP 状态码

@ResponseStatus 注解可以直接在异常类上指定 HTTP 状态码。这样,当该异常被抛出时,Spring 会自动返回指定的状态码。

示例:使用 @ResponseStatus 注解

@ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "Resource Not Found")
public class ResourceNotFoundException extends RuntimeException {public ResourceNotFoundException(String message) {super(message);}
}

这样,当 ResourceNotFoundException 被抛出时,Spring 会自动返回 HTTP 状态码 404,并带有自定义的错误信息。

7. 结论

Spring Boot 的异常处理机制非常强大,通过合理使用全局异常处理、局部异常处理、自定义异常类以及自定义错误响应,可以大大提升系统的健壮性和用户体验。

  1. 局部异常处理:适用于只需要在某个控制器内处理的异常,使用 @ExceptionHandler 注解。
  2. 全局异常处理:使用 @ControllerAdvice@RestControllerAdvice 进行全局异常捕获,便于集中管理异常处理。
  3. 自定义异常:通过自定义异常类和自定义异常处理逻辑,使得异常处理更加符合业务需求。
  4. 优化用户体验:通过返回详细的错误响应,帮助用户理解问题所在,同时提供更好的错误信息。

通过这些优化,你的 Spring Boot 应用将能更好地处理异常,并提升用户体验。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。


版权声明:本文由作者原创,转载请注明出处,谢谢支持!

http://www.dtcms.com/a/419975.html

相关文章:

  • JavaScript 的 type 有哪些
  • 施工员证怎么查询网站网站怎么做直播功能
  • 西安专业做网站的的公司上海央企排名前十名
  • CDN 支持 HTTPS 怎么做?实战要点、常见坑与真机验证流程(CDN HTTPS 配置、证书、SNI、TLS、性能与排查)
  • 做特效的网站腾云网
  • 网站租用服务器多少钱个人网站可以做app吗
  • 高通Android设备像素密度修改
  • HarmonyOS:固定样式弹出框
  • 网站建设与管理读书心得三亚新闻头条最新闻
  • 网站建设织梦怎么样软件开发 网站建设
  • 关于SPI通讯速度笔记
  • 【ROS2学习笔记】节点篇:ROS 2编程基础
  • 七、kubernetes 1.29 之 Service 的工作原理及其使用
  • DeepSeek-Math 学习笔记
  • 认识 Kubernetes:它从哪里来,要解决什么
  • 上海微网站制作建设wordpress改了固定链接出现404
  • CKAD-CN 考试知识点分享(15) 限制 内存 request 和 limit
  • 基于cms的企业网站建设建网站的公司大全
  • 行业网站开发程序山儿网站建设公司
  • C语言自学--自定义类型:结构体
  • Oracle快照备库FRA空间满导致无法连接
  • [xboard]17 uboot中的binman
  • 绵阳网站建设怎么选网站互点都是怎么做的
  • 源码下载网站百度下载2021新版安装
  • 给公司建立网站不可以做到的泰兴中信建设有限责任公司
  • MySQL程序简介
  • 创新的赣州网站建设网站建设与维护是什么
  • 湖北省市政工程建设网站网站开发框架的工具
  • sdio的切换I/O电压的详细流程
  • 浮梁网站推广房产网站建设价格