全局异常和自定义异常处理

全局异常GlobalException.java,basePackages:controller层所在的包全路径

import com.guet.score_management_system.common.domian.AjaxResult;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;/*** 全局异常处理*/
@ControllerAdvice(basePackages = "com.demo.controller")
public class GlobalException {/**统一处理异常@ExceptionHandler,用于Exception*//*  @ExceptionHandler(Exception.class)@ResponseBodypublic AjaxResult error(HttpServletRequest request,Exception e){return AjaxResult.error("系统异常");}*//**ExceptionHandler用来捕获ServiceException异常*/@ExceptionHandler(ServiceException.class)/**将AjaxResult转为JSON对象*/@ResponseBody/**需要自定义一个类,用来继承RuntimeException*/public AjaxResult serviceException(ServiceException e){return AjaxResult.error("500",e.getMessage());}
}

自定义异常ServiceException.java

public class ServiceException extends RuntimeException {/*** 异常信息*/private String message;public ServiceException(String message) {this.message = message;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}
}

使用,任意controller类

    public User login(User user) {/** 判断输入的用户名是否为空 */if (user.getUsername() == null || "".equals(user.getUsername())){throw new ServiceException("用户名不能为空");}/** 判断输入的密码是否为空 */if (user.getPassword() == null || "".equals(user.getPassword())){throw new ServiceException("密码不能为空");}/** 判断获取输入的用户名和密码与数据库中的是否对应 */User dbUser = userMapper.selectUsernameAndPassword(user.getUsername(), user.getPassword());if (dbUser == null){throw new ServiceException("用户名或密码错误");}return dbUser;}

前端

login() {request.post('/login', this.form).then(res => {if(res.code === '200'){this.$message.success('登录成功')// 跳转到首页this.$router.push('/')}else{this.$message.error(res.message)}})
},

效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/314492.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络复习1

概论 文章目录 概论计算机网络的组成功能分类性能指标(搞清楚每个时延的具体定义)分层结构协议、接口和服务服务的分类ISO/OSITCP/IP两者的不同 计算机网络的组成 组成部分:硬件,软件和协议(协议:传输数据…

基于Flutter构建小型新闻App

目录 1. 概述 1.1 功能概述 1.2 技术准备 1.3 源码地址 2. App首页 2.1 pubspec依赖 2.2 热门首页组件 2.2.1 DefaultTabController 2.2.2 Swiper 2.3 新闻API数据访问 2.4 热门首页效果图 3. 新闻分类 3.1 GestureDetector 3.2 新闻分类效果图 4. 收藏功能 4…

[蓝桥杯知识学习] 树链

DFS序 什么是DFS序 怎么求DFS序 进入操作,将有计数 出:可以理解为,没有孩子可以去了(不能,向下行动:对应于程序里的入栈),所以回到父结点(向上行动,对应于程…

虚幻UE 材质-PDO像素深度偏移量

2024年的第一天!!!大家新年快乐!!! 可能是长大了才知道 当你过得一般 你的亲朋好友对你真正态度只可能是没有表露出来的冷嘲热讽了 希望大家新的一年平安、幸福、 永远活力满满地追求自己所想做的、爱做的&…

Java---网络编程

文章目录 1. 网络编程概述2. InetAddress3. 端口和协议4. Java网络API5. URL6. URLConnection类 1. 网络编程概述 1. 计算机网络:是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软…

【Spring实战】15 Logback

文章目录 1. 依赖2. 配置3. 打印日志4. 启动程序5. 验证6. 调整日志级别7. 代码详细总结 Spring 作为一个现代化的 Java 开发框架,提供了很多便利的功能,其中包括灵活而强大的日志记录。本文将介绍如何结合 Spring 和 Logback 配置和使用日志&#xff0c…

Bytebase:统一数据库 CI/CD 解决方案 | 开源日报 No.128

bytebase/bytebase Stars: 7.9k License: NOASSERTION Bytebase 是一个数据库 CI/CD 解决方案,为开发人员和 DBA 提供统一的工具来管理不同数据库系统的开发生命周期。其主要功能包括标准化操作流程、SQL 代码审查、GitOps 集成以及数据访问控制等。关键特性和核心…

Ubuntu之修改时区/时间

1、查看当前时间及时区状态 sudo timedatectl status # 显示当前时区为Asia/Shanghai 2、查看当前系统时间 sudo date 3、查看当前系统时间及时区 sudo date -R # 显示当前时间及对应时区,时区为“0800”北京时区 4、修改硬件时间 修改日期格式&#xff1a…

Django 后台与便签

1. 什么是后台管理 后台管理是网页管理员利用网页的后台程序管理和更新网站上网页的内容。各网站里网页内容更新就是通过网站管理员通过后台管理更新的。 2. 创建超级用户 1. python .\manage.py createsuperuser 2. 输入账号密码等信息 Username (leave blank to use syl…

Android ImageView的Bitmap在scaleType情况下Bitmap顶部与底部RectF坐标,Kotlin

Android ImageView的Bitmap在scaleType情况下&#xff0c;Bitmap顶部与底部RectF坐标&#xff0c;Kotlin 通常&#xff0c;在ImageView设置scaleType后&#xff0c;Android会把原始图片通过缩放放在ImageView里面&#xff0c;例如&#xff1a; <ImageViewandroid:id"id…

龙迅#LT7911UX适用于Type-C/DP1.4a/EDP转MIPI或LVDS应用方案,分辨率高达8K30HZ ,可支持图像处理和旋转功能!

1. 产品描述 LT7911UX是一款高性能Type-C/DP1.4a/EDP转MIPI或LVDS芯片。 HDCP RX作为HDCP直放站的上游&#xff0c;可以与其他芯片的HDCP TX配合&#xff0c;实现直放站功能。 对于 DP1.4a 输入&#xff0c;LT7911UX可配置为 1/2/4 通道。自适应均衡使其适用于长电缆应用&…

代码随想Day55 | 392.判断子序列、115.不同的子序列

392.判断子序列 第一种思路是双指针&#xff0c;详细代码如下&#xff1a; class Solution { public:bool isSubsequence(string s, string t) {//双指针if(s.empty()&&t.empty()) return true;int i0,j0;while(i<t.size()){if(s[j]t[i]) j;if(js.size()) return t…