亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring @ExceptionHandler注解統(tǒng)一異常處理和獲取方法名

 更新時(shí)間:2023年09月25日 09:03:22   作者:樓蘭胡楊  
這篇文章主要介紹了Spring注解之@ExceptionHandler 統(tǒng)一異常處理和獲取方法名,在實(shí)際項(xiàng)目中,合理使用@ExceptionHandler能夠提高代碼的可維護(hù)性和用戶(hù)體驗(yàn),通過(guò)本文的解析和實(shí)踐,讀者可以更好地理解和掌握@ExceptionHandler的用法和原理

摘要:

在 Spring Boot 中,使用Spring注解@ControllerAdvice 和 @ExceptionHandler 統(tǒng)一處理異常,并捕獲方法名,從而快速定位錯(cuò)誤原因。

背景分析

  最近走查線上環(huán)境日志時(shí),發(fā)現(xiàn)打印了很多org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported異常日志,雖然知道是因?yàn)榻涌诓恢С諫ET請(qǐng)求導(dǎo)致的,但是,定位不到是因?yàn)殄e(cuò)誤調(diào)用哪個(gè)接口導(dǎo)致,給人很大困惑。

@ExceptionHandler介紹

  異常處理器@ExceptionHandler是Spring MVC框架中用于處理異常的注解,方法名按需自定義,方法參數(shù)可以是Exception及其子類(lèi)對(duì)象、HttpServletRequest、HttpServletResponse等,系統(tǒng)會(huì)自動(dòng)為它們賦值。方法返回值類(lèi)型可以為ModelAndView、Model、Map、View、String以及void等。它的作用是把各個(gè)Controller中拋出的異常集中到一個(gè)類(lèi)中處理。

  在被@ControllerAdvice或者@RestControllerAdvice修飾的類(lèi)里,可以使用@ExceptionHandler捕捉異常,返回值類(lèi)型為Map的示例如下:

@Slf4j
@RestControllerAdvice
public class GlobalExceptionAdvice {
	/*
   * 捕捉HTTP請(qǐng)求方式異常HttpRequestMethodNotSupportedException
   */
   @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
   public Map<String, Object> handleBadMethodException(HttpRequestMethodNotSupportedException exception, HttpServletRequest req) {
       log.error("不支持的請(qǐng)求方式:{}-{}", req.getRequestURI(), exception.getMessage());
       Map<String, Object> result=new HashMap();
       result.put("msg","不支持的請(qǐng)求方式");
       result.put("code", HttpStatus.METHOD_NOT_ALLOWED.value());
       return result;
   }
}

  @RestControllerAdvice:放在類(lèi)的上面,表示這個(gè)類(lèi)中有異常處理器,它是基于AOP的、對(duì)控制器類(lèi)的一個(gè)增強(qiáng)。

  req.getRequestURI()用于獲取當(dāng)前API訪問(wèn)路徑的URI,里面包含方法名,用于快速定位是哪個(gè)API出錯(cuò)。

  在上述異常處理器示例中,當(dāng)控制層拋出HttpRequestMethodNotSupportedException異常時(shí),handleBadMethodException方法會(huì)被調(diào)用,返回一個(gè)包含錯(cuò)誤信息的Map對(duì)象。如果把@ExceptionHandler(HttpRequestMethodNotSupportedException.class)改為@ExceptionHandler(Exception.class),則是處理全局異常了,會(huì)捕獲所有未被其它方法處理的異常,這樣處理的缺點(diǎn)是異常太過(guò)寬泛,不利于排查問(wèn)題。

  驗(yàn)證功能的方法很簡(jiǎn)單,請(qǐng)使用GET請(qǐng)求訪問(wèn)僅支持POST請(qǐng)求的函數(shù),此時(shí),控制臺(tái)將打印如下信息:

不支持的請(qǐng)求方式:/wiener/XXXMethod-Request method 'GET' not supported

結(jié)束語(yǔ)

  Spring MVC的@ExceptionHandler注解為Web應(yīng)用程序提供了便捷的異常處理機(jī)制。通過(guò)使用該注解,可以在控制器中捕獲和處理特定類(lèi)型的異常,提供友好的錯(cuò)誤信息給用戶(hù)。在實(shí)際項(xiàng)目中,合理使用@ExceptionHandler能夠提高代碼的可維護(hù)性和用戶(hù)體驗(yàn)。通過(guò)本文的解析和實(shí)踐,讀者可以更好地理解和掌握@ExceptionHandler的用法和原理。

到此這篇關(guān)于Spring注解之@ExceptionHandler 統(tǒng)一異常處理和獲取方法名的文章就介紹到這了,更多相關(guān)Spring @ExceptionHandler 統(tǒng)一異常處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Springboot整合AOP和redis的示例詳解

    Springboot整合AOP和redis的示例詳解

    本文主要介紹了Springboot整合AOP和Redis的詳細(xì)過(guò)程,包括AOP的依賴(lài)引入和默認(rèn)配置屬性,日志切面格式以及Redis的自動(dòng)配置和連接池使用,總結(jié)了在多線程環(huán)境下,選擇合適的連接方式和客戶(hù)端是非常重要,感興趣的朋友一起看看吧
    2024-11-11
  • mybatisPlus批量插入優(yōu)化加快性能

    mybatisPlus批量插入優(yōu)化加快性能

    這篇文章主要介紹了mybatisPlus批量插入優(yōu)化加快性能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-12-12
  • Java中多線程的ABA場(chǎng)景問(wèn)題分析

    Java中多線程的ABA場(chǎng)景問(wèn)題分析

    這篇文章主要為大家介紹了Java中多線程的ABA場(chǎng)景問(wèn)題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • springboot之使用logback日志框架的圖文教程

    springboot之使用logback日志框架的圖文教程

    這篇文章主要介紹了springboot之使用logback日志框架的圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • maven中profile的使用

    maven中profile的使用

    本文主要介紹了maven中profile的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Java Map接口及其實(shí)現(xiàn)類(lèi)原理解析

    Java Map接口及其實(shí)現(xiàn)類(lèi)原理解析

    這篇文章主要介紹了Java Map接口及其實(shí)現(xiàn)類(lèi)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • java正則表達(dá)式判斷 ip 地址是否正確解析

    java正則表達(dá)式判斷 ip 地址是否正確解析

    這篇文章主要介紹了java正則表達(dá)式判斷 ip 地址是否正確解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Java 實(shí)現(xiàn)文件批量重命名親測(cè)可用(精簡(jiǎn)版)

    Java 實(shí)現(xiàn)文件批量重命名親測(cè)可用(精簡(jiǎn)版)

    本文給大家分享一段自己寫(xiě)的java代碼實(shí)現(xiàn)文件批量重命名,親測(cè)試過(guò)沒(méi)有任何問(wèn)題,大家可以放心使用
    2016-11-11
  • Java Date類(lèi)常用示例_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java Date類(lèi)常用示例_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    在JDK1.0中,Date類(lèi)是唯一的一個(gè)代表時(shí)間的類(lèi),但是由于Date類(lèi)不便于實(shí)現(xiàn)國(guó)際化,所以從JDK1.1版本開(kāi)始,推薦使用Calendar類(lèi)進(jìn)行時(shí)間和日期處理。這里簡(jiǎn)單介紹一下Date類(lèi)的使用,需要的朋友可以參考下
    2017-05-05
  • java實(shí)現(xiàn)事件委托模式的實(shí)例詳解

    java實(shí)現(xiàn)事件委托模式的實(shí)例詳解

    這篇文章主要介紹了java實(shí)現(xiàn)事件委托模式的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例來(lái)說(shuō)明如何實(shí)現(xiàn)改功能,希望能幫助到大家理解這樣的模式,需要的朋友可以參考下
    2017-08-08

最新評(píng)論