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

黑马JAVAWeb-11 请求参数为数组-XML自动封装-XML手动封装-增删改查-全局异常处理-单独异常分别处理

1.请求参数的接收-通过数组-Controller
在这里插入图片描述
在这里插入图片描述

  • 自动封装
    在这里插入图片描述
  • 手动封装
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    2.异常处理
  • 问题:后端服务器异常,但是前端点击保存,没有任何反应
    在这里插入图片描述
  • 使用try-catch捕获并处理
  • 若项目够大,每一个异常都要单独写个try-catch
    在这里插入图片描述
    - 全局异常处理器是 Spring 项目中用于统一捕获和处理项目中所有未被捕获的异常的组件,能避免异常直接暴露给用户,同时规范异常响应格式,简化异常处理逻辑
  • 核心就是在类上加上注解@RestControllerAdivce
  • 在方法上加上注解@ExceptionHandler
    在这里插入图片描述
  • 单独处理不同的异常
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.multipart.MaxUploadSizeExceededException;/*** 全局异常处理器* 注解 @RestControllerAdvice 表示:* 1. 该类是全局异常处理的切面类* 2. 所有 @RestController 注解的控制器抛出的异常会被这里捕获*/
@RestControllerAdvice
public class GlobalExceptionHandler {private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);/*** 处理自定义业务异常(最常用)*/@ExceptionHandler(BusinessException.class)public Result<Void> handleBusinessException(BusinessException e) {log.error("业务异常:{}", e.getMessage());// 返回自定义错误码和信息return Result.error(e.getCode(), e.getMessage());}/*** 处理参数校验异常(如 @Valid 注解触发的校验失败)*/@ExceptionHandler(MethodArgumentNotValidException.class)@ResponseStatus(HttpStatus.BAD_REQUEST) // 响应HTTP状态码400public Result<Void> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {BindingResult bindingResult = e.getBindingResult();// 提取第一个参数错误信息FieldError firstError = bindingResult.getFieldErrors().get(0);String errorMsg = firstError.getField() + ":" + firstError.getDefaultMessage();log.error("参数校验异常:{}", errorMsg);return Result.error(400, errorMsg);}/*** 处理文件上传大小超限异常*/@ExceptionHandler(MaxUploadSizeExceededException.class)public Result<Void> handleMaxUploadSizeExceededException(MaxUploadSizeExceededException e) {log.error("文件上传异常:{}", e.getMessage());return Result.error(413, "文件大小超过限制,请上传更小的文件");}/*** 处理所有未被捕获的异常(兜底处理)*/@ExceptionHandler(Exception.class)@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) // 响应HTTP状态码500public Result<Void> handleException(Exception e) {// 记录详细异常堆栈,方便排查问题log.error("系统异常:", e);// 给用户返回友好提示(不暴露具体错误信息)return Result.error(500, "系统繁忙,请稍后再试");}
}
  • 异常冲突时的优先级,此冲突中,Exception异常不响应,DuplicateKeyExcption异常响应
    在这里插入图片描述

在这里插入图片描述

  • 响应的状态码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • case 流程控制函数
    在这里插入图片描述
    在这里插入图片描述
  • if 条件控制语句
    在这里插入图片描述
    在这里插入图片描述
http://www.dtcms.com/a/585043.html

相关文章:

  • 算法通关指南:数据结构和算法篇 --- 队列相关算法题》--- 1. 【模板】队列,2. 机器翻译
  • 招聘决策新变革:判断型 AI 的应用与价值
  • 缓存三大问题深度解析:穿透、击穿与雪崩
  • 如何开公司做网站百度官方营销推广平台加载中
  • Linux:make自动化和实战演练
  • Qt实战:自定义搜索跳转控件 | 附完整源码
  • nanochat大语言模型讲解一
  • Vue3:watch与watchEffect的异同
  • 做网站代理wordpress文章半透明
  • (论文速读)LyT-Net:基于YUV变压器的轻量级微光图像增强网络
  • 操作系统?进程!!!
  • Diffusion 到 Flow Matching ( 从 DDPM 到 Stable Diffusion ) 丝滑入门
  • 无监督学习与互信息
  • 数据集预处理:规范化和标准化
  • vue学习之组件与标签
  • 软件测试之bug分析定位技巧
  • Rust 练习册 :Pig Latin与语言游戏
  • Tomcat的基本使用作用
  • 完整网站建设教程网站建设需要会什么软件
  • 【ASP.Net MVC 】使用Moq让单元测试变得更简单
  • Linux:线程的概念与控制
  • 零基础学AI大模型之嵌入模型性能优化
  • 【二叉搜索树】:程序的“决策树”,排序数据的基石
  • Canvas/SVG 冷门用法:实现动态背景与简易数据可视化
  • 昆明做网站做的好的公司智能建站系统 网站建设的首选
  • kali安装npm/sourcemap
  • 协作机器人的关节是通过什么工艺加工的
  • 轻松开启数字化时代,一键部署实现CRM落地
  • 长春市网站推广网站开发技术人员
  • JavaScript 指南