Java的全局異常處理代碼

第一步:先寫一個異常管理類:

package com.example.firefighting.exceptions;import com.example.firefighting.utils.Result;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;import static com.example.firefighting.utils.XiaofangConstants.SYSTEM_ANOMALY;/*** 異常處理* @author IT空門_門主* @date 2024/7/2*/@RestControllerAdvice
public class XiaofangException {/*** 全局異常*/@ExceptionHandler(value = Exception.class)public Result globalException() {return Result.fail(SYSTEM_ANOMALY);}/*** 業務異常處理* @param e* @return*/@ExceptionHandler(value = ServiceException.class)public Result serviceException(ServiceException e) {return Result.fail(e.getCode(), e.getMessage());}}
  1. 我這里定義了兩個異常:一個是全局異常和業務的異常。 項目大的情況下可以自定義更多的異常

第二步:業務的異常繼承了運行異常

package com.example.firefighting.exceptions;import lombok.Data;
import lombok.EqualsAndHashCode;/*** 業務邏輯異常 Exception*/
@Data
@EqualsAndHashCode(callSuper = true)
public final class ServiceException extends RuntimeException {/*** 業務錯誤碼*/private Integer code;/*** 錯誤提示*/private String message;public ServiceException(Integer code, String message) {this.code = code;this.message = message;}}
  1. 業務的異常中,可以通過自己的業務,編寫自己的業務邏輯。
  2. 我是為了統一管理業務錯誤,編寫了有參構造接收錯誤信息

第三步:工具類

package com.example.firefighting.exceptions.utils;import com.example.firefighting.exceptions.ServiceException;
import com.example.firefighting.utils.ErrorCode;import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;/*** @author IT空門_門主* @description: 自定義異常工具類* @date 2024/7/2*/public class ServiceExceptionUtil {/*** 錯誤碼提示模板*/private static final ConcurrentMap<Integer, String> MESSAGES = new ConcurrentHashMap<>();/*** 自定義異常*/public static ServiceException exception(ErrorCode errorCode) {String messagePattern = MESSAGES.getOrDefault(errorCode.getCode(), errorCode.getMsg());return exception0(errorCode.getCode(), messagePattern);}private static ServiceException exception0(Integer code, String messagePattern) {return new ServiceException(code, messagePattern);}}

1.ConcurrentHashMap:

用于多線程環境,允許多個線程同時讀寫映射而不會引起數據不一致的問題。ConcurrentHashMap是ConcurrentMap的一個實現,提供了高效的并發性能。

第四步:錯誤枚舉

package com.example.firefighting.enums;import com.example.firefighting.utils.ErrorCode;/*** 錯誤碼枚舉類* device 系統 從 1001開始-9999結束 不可重復* @author IT空門_門主* @date 2024/7/2*/public interface ErrorCodeConstants {ErrorCode USER_DOES_NOT_EXIST = new ErrorCode(1001, "該用戶不存在");ErrorCode USER_IS_DISABLED = new ErrorCode(1002, "該用戶已被禁用");ErrorCode INCORRECT_USERNAME_OR_PASSWORD = new ErrorCode(1003, "用戶名或密碼錯誤");
}

1.管理業務所有的錯誤碼

商務合作:z13135361785??

技術交流:z13135361785??

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39329.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39329.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39329.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

手機數據恢復篇:如何在恢復出廠設置后的 iPhone 恢復短信

您可能會認為&#xff0c;在恢復出廠設置iPhone后恢復短信時&#xff0c;一切都會丟失&#xff0c;但是仍然有一些方法可以檢索您的重要對話。截至 2024 年&#xff0c;數據恢復技術的進步使得從備份甚至直接從設備內存中搶救消息變得更加容易。無論是通過 iCloud、iTunes 還是…

LeetCode Hard|124.二叉樹中的最大路徑和

力扣題目鏈接 題目解讀&#xff1a; 二叉樹路徑的定義即從1.任意節點出發&#xff0c;到達任意節點&#xff1b;2.該路徑至少包含一個節點&#xff0c;且不一定經過跟節點&#xff1b;3.求所有可能路徑和的最大值。 也就是說路徑途徑一個節點只能選擇來去兩個方向 考慮一個二叉…

mongoose的個性化提取(字段篩選,數據據排序,數據截斷)

1.字段篩選 let BookModel mongoose.model(books,BookSchema);BookModel.find().select({name:1,author:1}).then((err,data) > {//回調返回數據if(err){console.log(err);return;}console.log(data);})//值為1表示顯示數據&#xff0c;為0表示不顯示數據 數據排序 BookMod…

2025年U.S.News世界大學排名前200榜單

近日&#xff0c;U.S. News公布了2025全球最佳院校排名&#xff0c;作為公認的四大世界高校排行榜&#xff0c;該排名主要圍繞著學術聲譽、學術成果等&#xff0c;因此備受訪問學者、聯合培養博士生及博士后申請者們青睞&#xff0c;知識人網小編特作介紹并發布排名前200的榜單…

使用Go語言實現高效的數據挖掘

隨著數據量的不斷增加以及各種數據類型的不斷涌現&#xff0c;數據挖掘技術變得越來越重要。在現代數據科學領域中&#xff0c;使用大量數據進行機器學習和其他挖掘任務已經成為常態。然而&#xff0c;在完成這些任務時&#xff0c;使用的編程語言對效率和結果都有著重要的影響…

我與C++的愛戀:list的使用

? ? &#x1f525;個人主頁&#xff1a;guoguoqiang. &#x1f525;專欄&#xff1a;我與C的愛戀 一、list介紹 1.list是可以在常數范圍內在任意位置進行插入和刪除的序列式容器&#xff0c;并且該容器可以前后雙向迭代 2.list的底層是雙向鏈表結構&#xff0c;雙向鏈表中…

華為OCR 騰訊OCR 百度OCR 三家各分秋色 第一當屬華為

當提及華為OCR的應用場景時&#xff0c;這些是常見的使用案例&#xff1a; 金融行業&#xff1a;在銀行和金融機構中&#xff0c;華為OCR技術廣泛用于身份證件識別、銀行卡識別和票據識別。這些功能可以用于客戶身份驗證、快速開戶以及自動化的支付處理。 政府服務&#xff1a…

淺析Estimator、model_fn與EstimatorSpec

參考閱讀&#xff1a;https://zhuanlan.zhihu.com/p/74857888 文章目錄 綜合對比Estimatormodel_fnEstimatorSpec關系總結 Estimator主要功能構造函數參數示例用法小結 model_fnEstimatorSpec字段解釋解釋代碼用途 綜合對比 Estimator、model_fn 和 EstimatorSpec 是 TensorF…

西電811考研、140分專業課及811/821經驗

被擬錄取了&#xff0c;說一說自己考研經驗&#xff0c;本人跟的研夢考研全程班&#xff0c;胖覃學長很負責任&#xff0c;貌似已經直博西電了&#xff0c;但也很負責。 1、通信工程學院分為學碩與專碩&#xff0c;學碩包含信息與通信工程、交通運輸工程、軍隊指揮學&#xff…

Perl語言中的排序藝術:深入探討內置排序函數

Perl是一種功能強大的腳本語言&#xff0c;以其靈活的文本處理能力而聞名。在Perl中&#xff0c;排序是一項常見的任務&#xff0c;無論是對數組元素進行排序&#xff0c;還是對復雜數據結構進行排序&#xff0c;Perl都提供了多種內置的排序函數&#xff0c;以滿足不同的需求。…

深入掌握Symfony與Composer:PHP依賴管理的藝術

引言 Composer是PHP的依賴管理工具&#xff0c;廣泛用于Symfony等現代PHP應用程序中。它允許開發者聲明依賴項&#xff0c;自動處理依賴的安裝和更新&#xff0c;確保應用程序的依賴項得到有效管理。本文將詳細介紹Composer的使用方法&#xff0c;包括基本命令、依賴管理、自動…

Linux環境安裝配置nginx服務流程

Linux環境的Centos、麒麟、統信操作系統安裝配置nginx服務流程操作&#xff1a; 1、官網下載 下載地址 或者通過命令下載 wget http://nginx.org/download/nginx-1.20.2.tar.gz 2、上傳到指定的服務器并解壓 tar -zxvf nginx-1.20.1.tar.gzcd nginx-1.20.1 3、編譯并安裝到…

條件過濾檢索

背景介紹 在大多數業務場景中&#xff0c;單純使用向量進行相似性檢索并無法滿足業務需求&#xff0c;通常需要在滿足特定過濾條件、或者特定的“標簽”的前提下&#xff0c;再進行相似性檢索。 向量檢索服務DashVector支持條件過濾和向量相似性檢索相結合&#xff0c;在精確滿…

數字化供應鏈:背景特點

?背景 1、外部環境 近年來&#xff0c;供應鏈脆弱性凸顯&#xff0c;企業供應鏈壓力難以緩解。 美國媒體針對美國零售聯合會、美國服裝和鞋類協會、美國供應鏈管理專業委員會等主體進行的一項供應鏈調查顯示&#xff1a; 61%的供應鏈經理預計&#xff0c;供應鏈紊亂問題至少…

C++(第一天-----命名空間和引用)

一、C/C的區別 1、與C相比   c語言面向過程&#xff0c;c面向對象。   c能夠對函數進行重載&#xff0c;可使同名的函數功能變得更加強大。   c引入了名字空間&#xff0c;可以使定義的變量名更多。   c可以使用引用傳參&#xff0c;引用傳參比起指針傳參更加快&#…

企業化運維(5)_mysql數據庫

###1.源碼編譯mysql### 對壓縮包進行解壓&#xff0c;并對mysql進行源碼編譯&#xff0c;其中需要下載依賴才能編譯成功。 官網&#xff1a; www.mysql.com解壓并進入目錄 [rootserver1 ~]# tar xf mysql-boost-5.7.40.tar.gz [rootserver1 ~]# cd mysql-5.7.40/安裝依賴性…

初識Java(復習版)

一. 什么是Java Java是一種面向對象的編程語言&#xff0c;和C語言有所不同&#xff0c;C語言是一門面向過程的語言。偏底層實現&#xff0c;比較注重底層的邏輯實現。不能一味的說某一種語言特別好&#xff0c;每一種語言都是在特定的情況下有自己的優勢。 二.Java語言發展史…

昇思25天學習打卡營第2天|yulang

今天主要了解快速入門&#xff0c;主要包含了處理數據集、網絡構建、模型訓練、保存模型和加載模型&#xff0c;這些對于不是算法工程師理解起來可能稍微有一點的難度&#xff0c;學習起來有點枯燥&#xff0c;期待后續實戰部分能完成一些獨立的比較有意思的項目。

鴻蒙項目實戰-月木學途:2.自定義底部導航

效果預覽 Tabs組件簡介 Tabs組件的頁面組成包含兩個部分&#xff0c;分別是TabContent和TabBar。TabContent是內容頁&#xff0c;TabBar是導航頁簽欄&#xff0c;頁面結構如下圖所示&#xff0c;根據不同的導航類型&#xff0c;布局會有區別&#xff0c;可以分為底部導航、頂部…

使用ECharts實現動態數據可視化的最佳實踐

使用ECharts實現動態數據可視化的最佳實踐 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 引言 隨著數據驅動決策的重要性日益增強&#xff0c;動態數據可視…