97色伦色在线综合视频,无玛专区,18videosex性欧美黑色,日韩黄色电影免费在线观看,国产精品伦理一区二区三区,在线视频欧美日韩,亚洲欧美在线中文字幕不卡

男女激烈做羞羞事網(wǎng)站如何在網(wǎng)站發(fā)廣告

鶴壁市浩天電氣有限公司 2026/01/24 10:40:35
男女激烈做羞羞事網(wǎng)站,如何在網(wǎng)站發(fā)廣告,sem競價開戶,做網(wǎng)站推廣代理視頻看了幾百小時還迷糊#xff1f;關(guān)注我#xff0c;幾分鐘讓你秒懂#xff01; 在 Java 高級工程師的面試中#xff0c;“如何統(tǒng)一處理異常”幾乎是必問的問題。尤其是在使用 Spring Boot 開發(fā)微服務(wù)時#xff0c;良好的異常處理機制不僅能提升系統(tǒng)健壯性#xff0c;還…視頻看了幾百小時還迷糊關(guān)注我?guī)追昼娮屇忝攵?Java 高級工程師的面試中“如何統(tǒng)一處理異?!睅缀跏潜貑柕膯栴}。尤其是在使用 Spring Boot 開發(fā)微服務(wù)時良好的異常處理機制不僅能提升系統(tǒng)健壯性還能讓前端獲得清晰、一致的錯誤信息。本文將從實際需求場景出發(fā)用通俗易懂的方式帶你掌握 Spring Boot 中的全局異常處理ControllerAdvice ExceptionHandler并附上正例、反例和注意事項小白也能輕松理解一、需求場景假設(shè)你正在開發(fā)一個用戶管理的 RESTful API前端調(diào)用/api/user/{id}獲取用戶信息如果id不存在后端應(yīng)返回404 Not Found如果數(shù)據(jù)庫連接失敗應(yīng)返回500 Internal Server Error所有錯誤都應(yīng)以統(tǒng)一 JSON 格式返回比如{ code: 404, message: 用戶不存在, timestamp: 2025-12-25T12:00:00 }問題來了如果每個 Controller 都手動 try-catch代碼會非常冗余且難以維護二、解決方案使用 ControllerAdvice 實現(xiàn)全局異常處理? 正確做法推薦1. 定義統(tǒng)一響應(yīng)格式// CommonResult.java public class CommonResultT { private int code; private String message; private T data; private String timestamp; // 構(gòu)造方法 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. 自定義業(yè)務(wù)異常類可選但推薦// 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 { // 處理自定義業(yè)務(wù)異常 ExceptionHandler(BusinessException.class) public ResponseEntityCommonResultVoid handleBusinessException(BusinessException ex) { return ResponseEntity.status(ex.getCode()) .body(CommonResult.error(ex.getCode(), ex.getMessage())); } // 處理資源未找到如路徑參數(shù)錯誤 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) { // 實際項目中應(yīng)記錄日志 ex.printStackTrace(); // 僅演示生產(chǎn)環(huán)境用 log.error() return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) .body(CommonResult.error(500, 服務(wù)器內(nèi)部錯誤請稍后再試)); } }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()方法可自行補充用于封裝成功響應(yīng)。三、反例千萬別這么寫? 反例1每個方法都 try-catchGetMapping(/{id}) public ResponseEntity? getUserBad(PathVariable Long id) { try { if (id 0) throw new IllegalArgumentException(無效ID); // ...業(yè)務(wù)邏輯 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, 服務(wù)器錯誤)); } }問題代碼重復(fù)違反 DRY 原則錯誤格式不統(tǒng)一難以維護新增異常類型需修改多處。? 反例2只捕獲 Exception忽略具體類型ExceptionHandler(Exception.class) public ResponseEntity? handleAll(Exception e) { return ResponseEntity.status(500).body(出錯了); }問題無法區(qū)分 400、404、500 等不同錯誤碼前端無法做針對性處理用戶體驗差。四、注意事項面試加分項ControllerAdvice vs RestControllerAdviceControllerAdvice配合ResponseBody使用才能返回 JSONRestControllerAdvice ControllerAdvice ResponseBody更簡潔推薦使用。異常處理順序很重要Spring 會優(yōu)先匹配最具體的異常類型。所以先寫B(tài)usinessException再寫NoSuchElementException最后寫Exception兜底務(wù)必記錄日志在handleUnexpectedError中一定要用log.error(系統(tǒng)異常, ex)記錄堆棧方便排查問題。不要暴露敏感信息生產(chǎn)環(huán)境中不要直接返回ex.getMessage()或堆棧信息防止信息泄露。結(jié)合 Validation 使用對于參數(shù)校驗可配合Valid和MethodArgumentNotValidException統(tǒng)一處理校驗錯誤。五、總結(jié)優(yōu)點說明? 代碼解耦異常處理與業(yè)務(wù)邏輯分離? 統(tǒng)一格式所有接口返回一致的錯誤結(jié)構(gòu)? 易于維護新增異常只需加一個ExceptionHandler? 提升體驗前端可根據(jù) code 做不同提示掌握這套全局異常處理機制不僅能讓你的代碼更專業(yè)在面試中也能展現(xiàn)出工程化思維和系統(tǒng)設(shè)計能力視頻看了幾百小時還迷糊關(guān)注我?guī)追昼娮屇忝攵?
版權(quán)聲明: 本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請聯(lián)系我們進行投訴反饋,一經(jīng)查實,立即刪除!

邢臺網(wǎng)站制作哪里好番禺網(wǎng)站開發(fā)服務(wù)

邢臺網(wǎng)站制作哪里好,番禺網(wǎng)站開發(fā)服務(wù),ASP.NET與網(wǎng)站開發(fā)編程實戰(zhàn),網(wǎng)站自動識別手機代碼已完成的內(nèi)容注冊與登錄功能#xff1a;用戶可以通過注冊頁面填寫信息完成注冊#xff0c;登錄頁面驗證用戶身

2026/01/23 03:54:01

研究生院 網(wǎng)站 建設(shè)10個免費自學(xué)網(wǎng)

研究生院 網(wǎng)站 建設(shè),10個免費自學(xué)網(wǎng),vi設(shè)計要做什么,天津網(wǎng)站建設(shè)網(wǎng)頁設(shè)計公司終極B站字幕獲取方案#xff1a;開源工具實現(xiàn)多語言字幕高效下載 【免費下載鏈接】BiliBiliCCSubtitle

2026/01/23 08:30:01