控制台网站用网盘做网站
2026/4/17 1:31:58 网站建设 项目流程
控制台网站,用网盘做网站,网上购物哪个平台质量有保证,建设企业官方网站的流程文章目录第5章#xff1a;SpringBoot 全局异常处理SpringBoot全局异常介绍第5章#xff1a;SpringBoot 全局异常处理 SpringBoot全局异常介绍 什么是全局异常处理#xff1f; 集中捕获项目中所有未被手动捕获的异常#xff1b;统一封装成前端可解析的 JSON 格式#xf…文章目录第5章SpringBoot 全局异常处理SpringBoot全局异常介绍第5章SpringBoot 全局异常处理SpringBoot全局异常介绍什么是全局异常处理集中捕获项目中所有未被手动捕获的异常统一封装成前端可解析的 JSON 格式如包含错误码、错误信息替代默认的杂乱错误页面 / 堆栈信息。为什么需要全局异常处理格式统一所有异常返回相同结构如{code: 500, msg: 服务器内部错误, data: null}前端无需适配多种错误格式。隐藏细节避免直接返回堆栈信息含代码路径等敏感信息提升安全性。减少冗余无需在每个 Controller 方法中重复编写try-catch简化代码。便于调试可在异常处理器中统一记录日志快速定位问题。ControllerAdvice标识一个 “全局增强类”作用于所有Controller标注的类可用于全局异常处理、全局数据绑定等。ExceptionHandler标注在方法上指定该方法处理哪种类型的异常如ExceptionHandler(NullPointerException.class)处理空指针异常实现流程当 Controller 方法抛出异常且未手动捕获时异常会被 Spring 框架捕获。Spring 会查找标注了ControllerAdvice的类中是否有ExceptionHandler标注的、匹配该异常类型的方法。找到匹配的方法后执行该方法将返回值统一响应格式返回给前端。定义统一响应结果类Resultpackagecom.guslegend.common;importlombok.Data;DatapublicclassResultT{// 状态码privateIntegercode;// 错误信息privateStringmsg;// 响应数据privateTdata;// 成功响应带数据publicstaticTResultTsuccess(Tdata){ResultTresultnewResult();result.setCode(200);result.setMsg(success);result.setData(data);returnresult;}// 成功响应无数据publicstaticTResultTsuccess(){returnsuccess(null);}// 错误响应publicstaticTResultTerror(Integercode,Stringmsg){ResultTresultnewResult();result.setCode(code);result.setMsg(msg);result.setData(null);returnresult;}}定义自定义业务异常packagecom.guslegend.exception;publicclassBusinessExceptionextendsRuntimeException{// 错误码privateIntegercode;// 构造方法传入错误码和错误信息publicBusinessException(Integercode,Stringmessage){super(message);this.codecode;}// getterpublicIntegergetCode(){returncode;}}实现全局异常处理器GlobalExceptionHandlerpackagecom.guslegend.exception;importcom.guslegend.common.Result;importlombok.extern.slf4j.Slf4j;importorg.springframework.web.bind.annotation.ControllerAdvice;importorg.springframework.web.bind.annotation.ExceptionHandler;importorg.springframework.web.bind.annotation.ResponseBody;ControllerAdviceSlf4jpublicclassGlobalExceptionHandler{/** * 处理自定义业务异常优先级最高先捕获业务异常 */ExceptionHandler(BusinessException.class)ResponseBody// 返回JSON格式publicResultVoidhandleBusinessException(BusinessExceptione){log.error(业务异常{},e.getMessage());returnResult.error(e.getCode(),e.getMessage());}/** * 处理系统异常如空指针、数据库异常等作为兜底处理 */ExceptionHandler(Exception.class)ResponseBodypublicResultVoidhandleSystemException(Exceptione){log.error(系统异常,e);returnResult.error(500,服务器内部错误请联系管理员);}}在业务中使用异常处理GetMapping(/error/{id})publicResultStringgetUser(PathVariableLongid){if(id0){thrownewBusinessException(404,用户不存在);}// 正常返回returnResult.success(用户信息id);}查看测试结果

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询