最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring的異常處理@ExceptionHandler注解解析

 更新時(shí)間:2023年12月25日 10:30:08   作者:云川之下  
這篇文章主要介紹了Spring的異常處理@ExceptionHandler注解解析,當(dāng)一個(gè)Controller中有方法加了@ExceptionHandler之后,這個(gè)Controller其他方法中沒(méi)有捕獲的異常就會(huì)以參數(shù)的形式傳入加了@ExceptionHandler注解的那個(gè)方法中,需要的朋友可以參考下

Spring的異常處理

為什么需要對(duì)異常進(jìn)行處理?

假如SpringMvc我們不對(duì)異常進(jìn)行任何處理, 界面上顯示的是這樣的,假設(shè)進(jìn)行除計(jì)算,除數(shù)是0會(huì)報(bào)錯(cuò).:

在這里插入圖片描述

方法一 @ExceptionHandler

當(dāng)一個(gè)Controller中有方法加了@ExceptionHandler之后,這個(gè)Controller其他方法中沒(méi)有捕獲的異常就會(huì)以參數(shù)的形式傳入加了@ExceptionHandler注解的那個(gè)方法中。

@Controller
@RequestMapping("/testController")
public class TestController {
    @RequestMapping("/demo1")
    @ResponseBody
    public Object demo1(){
       //不需要try {} catch {}
        int i = 1 / 0;
        return new Date();
    }
  //TestController 內(nèi)的任何異常都會(huì)被兜住
    @ExceptionHandler({RuntimeException.class})
    public ModelAndView fix(Exception ex){
        System.out.println("do This");
        return new ModelAndView("error",new ModelMap("ex",ex.getMessage()));
    }
}

注意事項(xiàng):

  • 一個(gè)Controller下多個(gè)@ExceptionHandler上的異常類型不能出現(xiàn)一樣的,否則運(yùn)行時(shí)拋異常.

Ambiguous @ExceptionHandler method mapped for;

  • @ExceptionHandler下方法返回值類型支持多種,常見(jiàn)的ModelAndView,@ResponseBody注解標(biāo)

方法返回值可以為:

ModelAndView對(duì)象
Model對(duì)象
Map對(duì)象
View對(duì)象
String對(duì)象
還有@ResponseBody、HttpEntity<?>或ResponseEntity<?>,以及void

缺點(diǎn): 幾乎所有的Controller都需要進(jìn)行異常處理,于是每個(gè)Controller都需要去寫(xiě)一個(gè)方法,不太方便

方法二 @ControllerAdvice+@ExceptionHandler

@ControllerAdvice注解聲明一個(gè)注解類,這個(gè)注解類中的方法的某些注解會(huì)應(yīng)用到所有的Controller里,其中就包括@ExceptionHandler注解。

/**
 * Created by liuruijie on 2016/12/28.
 * 全局異常處理,捕獲所有Controller中拋出的異常。
 */
@ControllerAdvice
public class GlobalExceptionHandler {
   //處理自定義的異常
   @ExceptionHandler(SystemException.class) 
   @ResponseBody
   public Object customHandler(SystemException e){
      e.printStackTrace();
      return WebResult.buildResult().status(e.getCode()).msg(e.getMessage());
   }
   //其他未處理的異常
   @ExceptionHandler(Exception.class)
   @ResponseBody
   public Object exceptionHandler(Exception e){
      e.printStackTrace();
      return WebResult.buildResult().status(Config.FAIL).msg("系統(tǒng)錯(cuò)誤");
   }
}

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

相關(guān)文章

  • java實(shí)現(xiàn)附件預(yù)覽(openoffice+swftools+flexpaper)實(shí)例

    java實(shí)現(xiàn)附件預(yù)覽(openoffice+swftools+flexpaper)實(shí)例

    本篇文章主要介紹了java實(shí)現(xiàn)附件預(yù)覽(openoffice+swftools+flexpaper)實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-10-10
  • 基于JDK動(dòng)態(tài)代理原理解析

    基于JDK動(dòng)態(tài)代理原理解析

    這篇文章主要介紹了基于JDK動(dòng)態(tài)代理原理解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java實(shí)現(xiàn)添加文字水印和圖片水印功能

    Java實(shí)現(xiàn)添加文字水印和圖片水印功能

    為圖片添加水印是一種常用的圖片處理技術(shù),本文主要介紹了Java實(shí)現(xiàn)添加文字水印和圖片水印功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • SpringBoot高效實(shí)現(xiàn)API限流的多種方法實(shí)戰(zhàn)

    SpringBoot高效實(shí)現(xiàn)API限流的多種方法實(shí)戰(zhàn)

    本文介紹了在SpringBoot項(xiàng)目中實(shí)現(xiàn)限流的多種方法,包括使用Guava庫(kù)的GuavaRateLimiter、基于Redis的分布式限流、Resilience4j限流器以及通過(guò)自定義過(guò)濾器實(shí)現(xiàn)API限流,感興趣的可以了解一下
    2026-01-01
  • Java Web程序中利用Spring框架返回JSON格式的日期

    Java Web程序中利用Spring框架返回JSON格式的日期

    這里我們來(lái)介紹一下Java Web程序中利用Spring框架返回JSON格式的日期的方法,前提注意使用@DatetimeFormat時(shí)要引入一個(gè)類庫(kù)joda-time-版本.jar,否則會(huì)無(wú)法訪問(wèn)相應(yīng)路徑
    2016-05-05
  • Nacos服務(wù)注冊(cè)與發(fā)現(xiàn)原理解讀

    Nacos服務(wù)注冊(cè)與發(fā)現(xiàn)原理解讀

    Nacos是阿里巴巴開(kāi)源的微服務(wù)組件,支持服務(wù)注冊(cè)、發(fā)現(xiàn)及配置管理,采用客戶端心跳維護(hù)、服務(wù)端推送與長(zhǎng)輪詢同步,結(jié)合健康檢查機(jī)制,實(shí)現(xiàn)高效可靠的微服務(wù)治理
    2025-08-08
  • SpringBoot實(shí)現(xiàn)系統(tǒng)監(jiān)控的完整示例

    SpringBoot實(shí)現(xiàn)系統(tǒng)監(jiān)控的完整示例

    本文介紹了如何對(duì)SpringBoot應(yīng)用進(jìn)行系統(tǒng)監(jiān)控,包括監(jiān)控的重要性、詳細(xì)步驟以及最佳實(shí)踐,監(jiān)控可以幫助我們預(yù)防問(wèn)題、快速定位和解決,提升系統(tǒng)性能和開(kāi)發(fā)體驗(yàn),需要的朋友可以參考下
    2025-12-12
  • idea Gradle 控制臺(tái)中文亂碼的解決

    idea Gradle 控制臺(tái)中文亂碼的解決

    通過(guò)IDEA執(zhí)行g(shù)radle的任務(wù)時(shí),在終端的輸出出現(xiàn)中文亂碼,本文主要介紹了idea Gradle 控制臺(tái)中文亂碼的解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • springboot如何整合elasticsearch

    springboot如何整合elasticsearch

    這篇文章主要介紹了springboot如何整合elasticsearch問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • java身份證合法性校驗(yàn)工具類實(shí)例代碼

    java身份證合法性校驗(yàn)工具類實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于java身份證合法性校驗(yàn)工具類的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評(píng)論

资溪县| 襄垣县| 永春县| 广州市| 新密市| 东城区| 梁河县| 郧西县| 安新县| 阿城市| 张北县| 宣化县| 包头市| 桦南县| 抚州市| 乐平市| 黄骅市| 专栏| 南华县| 贡山| 黎平县| 宜都市| 北宁市| 白沙| 秭归县| 侯马市| 湛江市| 徐汇区| 巴里| 嘉鱼县| 天气| 涡阳县| 吐鲁番市| 湘潭县| 介休市| 连城县| 南澳县| 独山县| 育儿| 岳普湖县| 涡阳县|