织梦商城网站模板html网页设计小作业的代码部分

张小明 2026/1/11 12:11:44
织梦商城网站模板,html网页设计小作业的代码部分,建设外贸英文网站,网站源码后台视频看了几百小时还迷糊#xff1f;关注我#xff0c;几分钟让你秒懂#xff01; 在 Java 高级工程师的面试中#xff0c;“如何统一处理异常”几乎是必问的问题。尤其是在使用 Spring Boot 开发微服务时#xff0c;良好的异常处理机制不仅能提升系统健壮性#xff0c;还…视频看了几百小时还迷糊关注我几分钟让你秒懂在 Java 高级工程师的面试中“如何统一处理异常”几乎是必问的问题。尤其是在使用 Spring Boot 开发微服务时良好的异常处理机制不仅能提升系统健壮性还能让前端获得清晰、一致的错误信息。本文将从实际需求场景出发用通俗易懂的方式带你掌握 Spring Boot 中的全局异常处理ControllerAdvice ExceptionHandler并附上正例、反例和注意事项小白也能轻松理解一、需求场景假设你正在开发一个用户管理的 RESTful API前端调用/api/user/{id}获取用户信息如果id不存在后端应返回404 Not Found如果数据库连接失败应返回500 Internal Server Error所有错误都应以统一 JSON 格式返回比如{ code: 404, message: 用户不存在, timestamp: 2025-12-25T12:00:00 }问题来了如果每个 Controller 都手动 try-catch代码会非常冗余且难以维护二、解决方案使用 ControllerAdvice 实现全局异常处理✅ 正确做法推荐1. 定义统一响应格式// CommonResult.java public class CommonResultT { private int code; private String message; private T data; private String timestamp; // 构造方法 Getter/Setter 省略可用 Lombok 简化 public static T CommonResultT error(int code, String message) { CommonResultT result new CommonResult(); result.code code; result.message message; result.timestamp java.time.LocalDateTime.now().toString(); return result; } }2. 自定义业务异常类可选但推荐// BusinessException.java public class BusinessException extends RuntimeException { private final int code; public BusinessException(int code, String message) { super(message); this.code code; } public int getCode() { return code; } }3. 全局异常处理器// GlobalExceptionHandler.java RestControllerAdvice public class GlobalExceptionHandler { // 处理自定义业务异常 ExceptionHandler(BusinessException.class) public ResponseEntityCommonResultVoid handleBusinessException(BusinessException ex) { return ResponseEntity.status(ex.getCode()) .body(CommonResult.error(ex.getCode(), ex.getMessage())); } // 处理资源未找到如路径参数错误 ExceptionHandler(NoSuchElementException.class) public ResponseEntityCommonResultVoid handleNotFound(Exception ex) { return ResponseEntity.status(HttpStatus.NOT_FOUND) .body(CommonResult.error(404, 资源不存在)); } // 捕获所有未处理的异常兜底 ExceptionHandler(Exception.class) public ResponseEntityCommonResultVoid handleUnexpectedError(Exception ex) { // 实际项目中应记录日志 ex.printStackTrace(); // 仅演示生产环境用 log.error() return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) .body(CommonResult.error(500, 服务器内部错误请稍后再试)); } }4. Controller 示例RestController RequestMapping(/api/user) public class UserController { GetMapping(/{id}) public CommonResultUser getUser(PathVariable Long id) { if (id 0) { throw new BusinessException(400, 用户ID无效); } if (id 999) { throw new NoSuchElementException(用户不存在); } // 模拟正常返回 User user new User(id, 张三); return CommonResult.success(user); } }CommonResult.success()方法可自行补充用于封装成功响应。三、反例千万别这么写❌ 反例1每个方法都 try-catchGetMapping(/{id}) public ResponseEntity? getUserBad(PathVariable Long id) { try { if (id 0) throw new IllegalArgumentException(无效ID); // ...业务逻辑 return ResponseEntity.ok(...); } catch (IllegalArgumentException e) { return ResponseEntity.badRequest().body(Map.of(error, e.getMessage())); } catch (Exception e) { return ResponseEntity.status(500).body(Map.of(error, 服务器错误)); } }问题代码重复违反 DRY 原则错误格式不统一难以维护新增异常类型需修改多处。❌ 反例2只捕获 Exception忽略具体类型ExceptionHandler(Exception.class) public ResponseEntity? handleAll(Exception e) { return ResponseEntity.status(500).body(出错了); }问题无法区分 400、404、500 等不同错误码前端无法做针对性处理用户体验差。四、注意事项面试加分项ControllerAdvice vs RestControllerAdviceControllerAdvice配合ResponseBody使用才能返回 JSONRestControllerAdvice ControllerAdvice ResponseBody更简洁推荐使用。异常处理顺序很重要Spring 会优先匹配最具体的异常类型。所以先写BusinessException再写NoSuchElementException最后写Exception兜底务必记录日志在handleUnexpectedError中一定要用log.error(系统异常, ex)记录堆栈方便排查问题。不要暴露敏感信息生产环境中不要直接返回ex.getMessage()或堆栈信息防止信息泄露。结合 Validation 使用对于参数校验可配合Valid和MethodArgumentNotValidException统一处理校验错误。五、总结优点说明✅ 代码解耦异常处理与业务逻辑分离✅ 统一格式所有接口返回一致的错误结构✅ 易于维护新增异常只需加一个ExceptionHandler✅ 提升体验前端可根据 code 做不同提示掌握这套全局异常处理机制不仅能让你的代码更专业在面试中也能展现出工程化思维和系统设计能力视频看了几百小时还迷糊关注我几分钟让你秒懂
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

服务周到的做网站太原建站服务

LoRa信号处理终极指南:从基础到高效部署 【免费下载链接】lolra Transmit LoRa Frames Without a Radio 项目地址: https://gitcode.com/GitHub_Trending/lo/lolra 在物联网快速发展的今天,LoRa技术凭借其出色的传输距离和低功耗特性,…

张小明 2026/1/9 22:44:22 网站建设

网站不排名一切等于零做会计要关注什么网站

今天用学校的服务器遇到了一个问题: 学校的服务器用的是VNC viewer连接服务器,由于课下有继续使用服务器的需求,我在个人pc上使用mobaxterm通过SSH连接了服务器。今天上课的时候突然想用VNC连接一下,但是连接过程一直报错&#x…

张小明 2026/1/9 12:03:46 网站建设

江西省城乡建设厅网站查询证件专业网站制作公司四川

Kimi-Audio-7B-Instruct:三大突破重新定义开源音频大模型的终极标准 【免费下载链接】Kimi-Audio-7B-Instruct 我们推出 Kimi-Audio——一个在音频理解、生成与对话方面表现卓越的开源音频基础模型。本仓库提供 Kimi-Audio-7B-Instruct 的模型检查点。 项目地址: …

张小明 2026/1/10 17:35:09 网站建设

一般做平面网站多少钱杭州设计公司装修

在人工智能飞速发展的今天,数据早已成为驱动模型进步的核心燃料。无论是计算机视觉领域的图像分类、目标检测,还是自然语言处理中的文本分析,高质量、大规模的数据集都是模型取得优异效果的前提。然而在实际开发中,我们往往面临着…

张小明 2026/1/2 5:54:42 网站建设

哈尔滨 网站开发网站建设着

掌握5大核心技巧:knowledge-grab教育资源下载工具完全指南 【免费下载链接】knowledge-grab knowledge-grab 是一个基于 Tauri 和 Vue 3 构建的桌面应用程序,方便用户从 国家中小学智慧教育平台 (basic.smartedu.cn) 下载各类教育资源。 项目地址: htt…

张小明 2026/1/8 8:55:32 网站建设

网站开发 青岛中信建设证券官方网站

OpenArm 7自由度开源机械臂:颠覆传统研究范式的3大核心优势 【免费下载链接】OpenArm OpenArm v0.1 项目地址: https://gitcode.com/gh_mirrors/op/OpenArm 你是否曾经因为商用机械臂的高昂价格和封闭系统而望而却步?OpenArm开源机械臂正以其革命…

张小明 2026/1/6 9:30:46 网站建设