尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

全局异常处理(@ControllerAdvice)

全局异常处理(@ControllerAdvice) 全局异常处理ControllerAdvice实验目的1.理解异常处理在后端开发中的作用。2.掌握 Spring Boot 全局异常处理机制。3.掌握 ControllerAdvice 和 ExceptionHandler 的使用方法。4.能够统一处理系统异常并返回规范格式数据。5.结合 Result 统一返回结构实现异常统一输出。实验环境开发工具IntelliJ IDEA构建工具Maven测试工具Postman或浏览器AI工具通义灵码实验要求在校园二手交易系统中实现全局异常处理功能1.所有异常必须统一返回 Result 格式2.能够处理常见异常空指针、参数错误等3.自定义业务异常并统一处理4.测试异常返回结果实验内容第一部分问题引入统当前系统存在问题❌ 出现异常时返回默认错误页面不友好❌ 返回格式不统一破坏接口规范❌ 前端无法识别错误类型目标所有异常 → 统一返回 JSON第二部分创建全局异常处理类创建 GlobalExceptionHandlerRestControllerAdvicepublic class GlobalExceptionHandler {}说明RestControllerAdvice ControllerAdvice ResponseBody用于统一处理 Controller 层异常第三部分处理系统异常1.处理通用异常ExceptionExceptionHandler(Exception.class)public ResultString handleException(Exception e){e.printStackTrace();return Result.error(系统异常 e.getMessage());}作用捕获所有未处理异常2.处理空指针异常ExceptionHandler(NullPointerException.class)public ResultString handleNullException(NullPointerException e){return Result.error(空指针异常);}3.处理参数异常ExceptionHandler(IllegalArgumentException.class)public ResultString handleIllegalArgument(IllegalArgumentException e){return Result.error(参数错误 e.getMessage());}第四部分自定义业务异常1.创建业务异常类DeleteMapping(/{id})public class BusinessException extends RuntimeException {public BusinessException(String message){super(message);}}2.全局处理业务异常ExceptionHandler(BusinessException.class)public ResultString handleBusinessException(BusinessException e){return Result.error(e.getMessage());}第五部分在业务中使用异常1.示例删除商品接口DeleteMapping(/{id})public ResultString delete(PathVariable Long id){Goods goods goodsMapper.selectById(id);if(goods null){throw new BusinessException(商品不存在);}goodsMapper.deleteById(id);return Result.success(删除成功);}第六部分测试异常处理1.测试业务异常访问不存在的IDDELETE http://localhost:8080/goods/999返回结果{code: 500,message: 商品不存在,data: null}2.测试空指针异常手动制造异常String str null;str.length();返回结果{code: 500,message: 空指针异常,data: null}3.测试通用异常返回结果{code: 500,message: 系统异常xxx,data: null}
返回列表