精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Spring MVC 異常處理方式

開發 前端
他們的區別其實就是Rest的注解中多了一個@ResponseBody 注解(將方法的返回值,以特定的格式寫入到response的body,進而將數據返回給客戶端,如果是字符串直接輸出字符串信息,如果是對象將會把對象轉為json進行輸出)。

當程序發生異常時我們可以通過如下兩個注解來統一處理異常信息。

@ControllerAdvice 和 @RestControllerAdvice

他們的區別其實就是Rest的注解中多了一個@ResponseBody 注解(將方法的返回值,以特定的格式寫入到response的body,進而將數據返回給客戶端,如果是字符串直接輸出字符串信息,如果是對象將會把對象轉為json進行輸出)。

源碼:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface ControllerAdvice {
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@ControllerAdvice
@ResponseBody
public @interface RestControllerAdvice {
}

方式一、Controller內部處理異常

@RestController
public class TestController {  
  @GetMapping("/test/{id}")
  public Object test(@PathVariable Integer id) {
    if (id < 5) {
      throw new RuntimeException("運行時異常") ;
    }
    return "測試異常處理" ;
  }
  
  @ExceptionHandler
  public Object handle(Exception e) {
    return e.getMessage() ;
  }
  
}

這樣如果這個Controller中的接口發生了異常那么就會執行有@ExceptionHandler標注的方法。

該種方式處理異常只是針對當前Controller,一個項目肯定會有很多的Controller,如果每一個類都這樣處理明顯是太麻煩,而且還不方便統一異常的處理。

方式二、全局異常處理

可以在一個類上添加 @RestControllerAdvice或@ControlerAdvice

@RestControllerAdvice
public class TestControllerAdvice {
  @ExceptionHandler
  public Object handle(Exception e) {
    return "我是全局異常:" + e.getMessage() ;
  }  
}

到此全局異常的使用方式就結束了當你訪問接口時你會發現全局異常沒有起作用。

當我們把controller中的@ExceptionHandler注釋了,這時全局異常才會生效。

結論:局部異常處理優先級高于全局異常處理。

以上是項目中如果使用異常處理句柄的方式;接下來我們來看看在全局異常處理句柄中如何進行局部控制(比如只處理有特定注解的或是只處理部分controller又或者是指定包下的controller)。

1、只處理特定注解

自定義Annotation:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AppAnnotation {


}

Controller類:

有@AppAnnotation注解的Controller

@AppAnnotation
@RestController
public class AnnotationController {


  @GetMapping("/an/get/{id}")
  public Object an(@PathVariable Integer id) {
    if (id < 10) {
      throw new RuntimeException("發生錯誤了") ;
    }
    return "自定義Annotation注解: " + id ;
  }
  
}

沒有@AppAnnotation注解的Controller

@RestController
public class AnnotationController2 {
  
  @GetMapping("/an/get2/{id}")
  public Object an(@PathVariable Integer id) {
    if (id < 10) {
      throw new RuntimeException("2發生錯誤了") ;
    }
    return "自定義Annotation注解2: " + id ;
  }
}

ControllerAdvice異常處理類:

@RestControllerAdvice(annotations = {AppAnnotation.class})
public class AnnotationControllerAdvice {
  
  @ExceptionHandler
  public Object handle(Exception e) {
    return "特定注解全局異常:" + e.getMessage() ;
  }
  
}

分別訪問/an/get/1 和/an/get2/1接口,只有有@AppAnnotation注解的Controller會被處理。

2、只處理指定的Controller

新建UserController

@RestController
public class UserController {
    
  @GetMapping("/user/{id}")
  public Object get(@PathVariable Integer id) {
    if (id < 10) {
      throw new RuntimeException("用戶ID錯誤") ;
    }
    return "Users" ;
  }
  
}

新建PersonController

@RestController
public class PersonController {
  
  
  @GetMapping("/person/{id}")


  public Object get(@PathVariable Integer id) {
    if (id < 10) {      throw new RuntimeException("Person ID錯誤") ;
    }
    return "Person" ;
  }
  
}

全局異常處理類:

@RestControllerAdvice(assignableTypes = {UserController.class})
public class SpecificControllerAdvice {
  
  @ExceptionHandler
  public Object handle(Exception e) {
    return "指定Controller全局異常:" + e.getMessage() ;
  }
  
}

這里通過assignableTypes屬性來限定了只有UserController類發生了異常才會做出響應。

PersonController發生異常不會被處理。

3、指定包下的Controller

@RestControllerAdvice(basePackages = {"com.pack.pkg1"})
public class PackageControllerAdvice {
  
  @ExceptionHandler
  public Object handle(Exception e) {
    return "指定包下的全局異常:" + e.getMessage() ;
  }
  
}

UserController類位于pkg1包下:

package com.pack.pkg1;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController("userPController")
public class UserController {
  @GetMapping("/userp/{id}")
  public Object get(@PathVariable Integer id) {
    if (id < 10) {
      throw new RuntimeException("用戶ID錯誤") ;
    }
    return "Users" ;
  }
}

PersonController類位于pkg2包下:

package com.pack.pkg2;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController("personPController")
public class PersonController {
  @GetMapping("/personp/{id}")
  public Object get(@PathVariable Integer id) {
    if (id < 10) {
      throw new RuntimeException("Person ID錯誤") ;
    }


    return "Person" ;
  }}

當訪問com.pack.pkg1包下的接口出現異常后就會被處理。

到此結束

關于@ExceptionHandler 方法句柄可接受的參數及返回值大家可參考這里


圖片

接受的參數類型


圖片

責任編輯:武曉燕 來源: 實戰案例錦集
相關推薦

2023-08-25 08:35:58

Rest方法字符串

2021-03-31 09:11:27

URLErrorHTTPError

2011-05-24 09:22:44

Spring3異常處理

2024-12-18 16:19:51

2025-10-27 01:00:00

2023-09-29 11:29:12

Spring異常處理類

2018-08-14 13:26:07

異常設計斷網

2025-01-26 00:00:25

限流組件HTTP

2017-04-17 10:05:51

Hadoop錯誤方式

2009-12-31 14:25:19

Silverlight

2010-01-18 16:58:29

VB.NET Over

2023-02-23 08:15:33

Spring異常處理機制

2009-07-21 15:47:35

JDBC批處理

2023-10-08 20:31:18

React

2022-03-07 14:39:01

前端框架批處理

2024-04-07 08:50:00

GenAIAI人工智能

2010-01-07 17:57:22

VB.NET構造函數

2010-01-13 17:23:36

VB.NET動態事件

2024-11-20 13:20:32

2025-01-27 12:19:51

點贊
收藏

51CTO技術棧公眾號

а√中文在线8| 中文字幕在线观看2018| 芒果视频成人app| 久久精品亚洲国产奇米99| 国产精品自产拍在线观| 久久久久久久久毛片| 麻豆精品少妇| 3d动漫精品啪啪一区二区竹菊| 国产一区 在线播放| 国产女主播在线写真| 国产精品99久久久久久久女警| 久久久久久国产精品美女| 韩国三级hd中文字幕| 亚洲图色一区二区三区| 日韩欧中文字幕| 中文字幕欧美人与畜| 亚洲欧美日韩综合在线| 国产一区二区视频在线播放| 欧洲成人午夜免费大片| www.超碰在线观看| re久久精品视频| 亚洲经典中文字幕| 在线观看岛国av| 625成人欧美午夜电影| 亚洲免费高清视频在线| 色中色综合成人| 人人妻人人澡人人爽久久av| 国产尤物一区二区在线| 国产成人精品亚洲精品| 日产精品久久久久久久| 欧美高清不卡| 中文字幕亚洲欧美日韩高清| 色噜噜在线观看| 都市激情亚洲欧美| 日韩视频不卡中文| 国产欧美精品一二三| 国产91亚洲精品久久久| 日本韩国一区二区三区| 国产资源在线视频| 国产理论电影在线| 尤物视频一区二区| 色乱码一区二区三区熟女| 91精品国产91久久久久游泳池| 99久久国产综合精品色伊| 国产高清在线一区| 亚洲奶汁xxxx哺乳期| 国内精品写真在线观看| 成人精品网站在线观看| 一卡二卡三卡在线观看| 亚洲毛片网站| 98精品国产自产在线观看| 国产小视频在线观看免费| 欧美福利网址| 久久久亚洲成人| 久久精品欧美一区二区| 精品二区久久| 4444欧美成人kkkk| 一级黄色在线视频| 日日夜夜精品免费视频| 国产高清在线不卡| 中文字幕在线观看你懂的| 青青草国产成人av片免费| 国产不卡视频在线| 中文字幕激情视频| 狠狠色丁香久久婷婷综合_中 | cao在线视频| 激情成人中文字幕| 国产成人久久婷婷精品流白浆| 免费观看欧美大片| 欧美亚洲一区二区三区四区| 奇米影视四色在线| 日韩精品三级| 亚洲第一精品夜夜躁人人爽 | 国产精品人妖ts系列视频| 一区精品视频| 爱看av在线| 色先锋aa成人| 亚洲激情在线看| 日本99精品| 日韩电影中文字幕一区| 无码人妻精品一区二区中文| 日韩av在线播放网址| 久久久999精品免费| 欧美一级高潮片| 久久中文在线| 91黄色国产视频| 深夜福利免费在线观看| 国产精品不卡在线| 97免费视频观看| 精品国模一区二区三区| 日韩一区二区三区精品视频| 国产精品无码一区二区三| 欧美日韩高清| 欧美福利小视频| 亚洲成人第一网站| 国产一区二区三区在线观看免费 | 91av在线精品| 亚洲综合精品视频| 成人av网站在线观看免费| 日本视频一区在线观看| av免费看在线| 在线免费一区三区| 无码人妻丰满熟妇区毛片蜜桃精品| 自拍偷拍精品| 久久久久久久一区二区三区| 中文字幕av第一页| 成人av网站免费| 一区在线电影| 欧美性xxx| 精品区一区二区| 青青草自拍偷拍| 一级成人国产| 99精品99久久久久久宅男| 国产毛片av在线| 亚洲aⅴ怡春院| 国产在线视频三区| 成人3d动漫在线观看| 久久久久一本一区二区青青蜜月| 伊人成人在线观看| 久久伊人中文字幕| 97干在线视频| 国产精品theporn| 草莓视频成人appios| 欧美日韩国产影片| 欧美丰满少妇人妻精品| 婷婷精品进入| 欧美一级视频免费在线观看| 国产丝袜视频在线观看| 中文字幕不卡三区| 国产l精品国产亚洲区久久| 欧美一区在线观看视频| 在线电影av不卡网址| 日本视频在线观看免费| 成人免费视频一区二区| 亚洲中文字幕无码一区二区三区| 精品久久久网| 色yeye香蕉凹凸一区二区av| 伊人手机在线视频| 成人av影院在线| 天堂8在线天堂资源bt| 91成人短视频在线观看| 日韩中文字幕在线视频| 真实新婚偷拍xxxxx| 久久九九99视频| 国产成人精品无码播放| 希岛爱理av免费一区二区| 久久久久久久久久久国产| 精品国产av鲁一鲁一区| 亚洲免费观看高清完整| 久久精品一二三四| 亚洲精品国产偷自在线观看| 91啪国产在线| 性欧美video高清bbw| 欧美一区二区福利视频| 欧美国产日韩在线观看成人| 黄色日韩网站视频| 日本福利视频网站| 第四色中文综合网| 欧美专区第一页| 你懂得网站在线| 欧美亚洲国产bt| 青青青视频在线播放| 麻豆中文一区二区| 欧美精品久久96人妻无码| 精品网站999| 久久久久久这里只有精品| 日本高清视频免费观看| 五月婷婷综合网| www.色天使| 日韩国产欧美一区二区三区| 亚洲国产欧美一区二区三区不卡| 日韩第二十一页| 久久国产精品首页| 丰满熟妇人妻中文字幕| 欧美日韩国产一区中文午夜| 国产一区二区三区四区五区六区| 免费高清成人在线| 欧美性受黑人性爽| 精品国产一区二区三区不卡蜜臂 | 美女一区二区久久| 久久久久亚洲av无码专区喷水| 在这里有精品| 日本亚洲欧洲色α| 福利视频在线| 亚洲精品成人久久电影| 亚洲视屏在线观看| 一区二区三区欧美| 国产美女喷水视频| 久久精品久久综合| 国产亚洲精品久久久久久久| 偷拍亚洲色图| 成人黄在线观看| 人在线成免费视频| xvideos成人免费中文版| 丁香六月色婷婷| 欧美在线视频全部完| 欧美黄色免费看| 国产日韩欧美精品电影三级在线| 香蕉网在线视频| 久久精品盗摄| 男人草女人视频| 国产一区二区三区站长工具| wwwxx欧美| 国产一区二区三区四区五区3d| 欧美激情视频一区二区| av资源在线观看免费高清| 精品国精品国产| 在线视频 中文字幕| 欧美日韩国产在线播放| 久久高清内射无套| 久久精品一区二区三区不卡| 潘金莲一级淫片aaaaaaa| 日韩成人一级片| 欧美一级视频免费看| 91久久国产| 五月天亚洲综合情| 欧美黄色录像| 99蜜桃在线观看免费视频网站| 日本精品在线一区| 欧美在线视频一区二区| 欧美巨大xxxx做受沙滩| 日韩中文字幕视频| www免费网站在线观看| 亚洲精品视频在线播放| 亚洲AV无码国产精品午夜字幕| 欧美日韩亚洲综合一区| 在线永久看片免费的视频| 五月天婷婷综合| 国产无码精品视频| 亚洲精品水蜜桃| 少妇视频一区二区| 日本一区二区三区在线观看| 三级电影在线看| 成人18精品视频| 久久久久麻豆v国产| 亚洲电影在线一区二区三区| 欧美日韩亚洲一区二区三区四区| 精品91福利视频| 国产欧美日韩最新| 春暖花开亚洲一区二区三区| 91国内免费在线视频| 黄污视频在线观看| 欧美第一淫aaasss性| 超碰个人在线| 久久综合伊人77777蜜臀| 91激情在线| 中文字幕日韩av电影| 成全电影播放在线观看国语| 亚洲欧美日韩精品| 免费理论片在线观看播放老| 日韩黄色在线免费观看| 无码国精品一区二区免费蜜桃| 欧美v国产在线一区二区三区| 国产99对白在线播放| 日韩一区二区中文字幕| 国产成人久久精品77777综合| 日韩一区二区麻豆国产| 午夜精品久久久久久久96蜜桃| 欧美大胆人体bbbb| 日日躁夜夜躁白天躁晚上躁91| 免费欧美一区| 久久综合九色综合网站| 校花撩起jk露出白色内裤国产精品| 狠狠干一区二区| 亚洲婷婷丁香| 视频一区二区三| 2023国产精品久久久精品双| 好吊色视频988gao在线观看| 亚洲视频综合| 国产午夜伦鲁鲁| 三级欧美韩日大片在线看| 亚洲视频在线a| 精品在线免费观看| 韩国黄色一级片| 99精品欧美一区二区三区小说 | 精品精品国产三级a∨在线| 免费国产在线精品一区二区三区| 欧美精品羞羞答答| 尤物国产精品| 亚洲第一网站| 国产裸体免费无遮挡| 国精品**一区二区三区在线蜜桃| 亚洲一二三四五| 久久免费电影网| 91久久久久久久久久久久久久| 一区二区三区免费| 无码人妻精品一区二区三区蜜桃91| 欧美日韩一卡二卡三卡| 成人精品在线播放| 国产一区二区精品丝袜| 午夜dj在线观看高清视频完整版| 7777精品视频| 97精品资源在线观看| 国产美女在线精品免费观看| 欧美亚洲国产激情| 被灌满精子的波多野结衣| 三级成人在线视频| 涩视频在线观看| 日本一区二区成人在线| 精品无码av在线| 欧美撒尿777hd撒尿| 天堂网在线观看视频| 少妇av一区二区三区| 国产精品高颜值在线观看| 国产精品亚洲激情| 午夜先锋成人动漫在线| 国产成人三级视频| 日韩一区精品字幕| 亚洲图片综合网| 亚洲免费在线观看| 国产九色91回来了| 亚洲激情久久久| yellow91字幕网在线| 国产不卡视频在线| 欧美丝袜美腿| 成人av在线播放观看| 免费在线欧美视频| asian性开放少妇pics| 一区二区三区中文字幕在线观看| 中文人妻熟女乱又乱精品| 亚洲美女性视频| 男人天堂视频在线观看| 9a蜜桃久久久久久免费| 婷婷综合视频| 欧美婷婷精品激情| 国产午夜精品久久| 青青草免费观看视频| 精品国产凹凸成av人导航| 精品视频在线一区二区| 国产精品丝袜高跟| 精品日韩欧美一区| 成人一级片网站| 91视视频在线观看入口直接观看www | 国产又大又长又粗| 日韩在线免费高清视频| 神马久久资源| 欧美主播一区二区三区美女 久久精品人 | 成人黄色91| 中文一区一区三区免费| 免费观看久久久4p| 免费黄在线观看| 欧美视频在线一区| 69久久久久| 国产日韩精品在线| 国产精品毛片一区二区在线看| 午夜视频在线网站| 亚洲视频免费在线| 国产三级漂亮女教师| 美日韩精品免费视频| 成人在线精品| 久久久久久久香蕉| 成人免费不卡视频| 日本中文字幕免费| 精品视频在线观看日韩| 欧美大胆性生话| 日韩在线电影一区| 久久精品国产亚洲a| www日韩在线| 精品少妇一区二区三区免费观看 | 好吊一区二区三区视频| 欧美日韩亚洲91| 内衣办公室在线| 国产精品免费视频久久久| 日韩欧美高清| 手机av在线网站| 亚洲午夜久久久久| 狠狠人妻久久久久久综合麻豆| 97在线免费观看| 激情五月综合| 亚洲精品免费一区亚洲精品免费精品一区| 亚洲欧洲无码一区二区三区| aaaa一级片| 91精品国产高清久久久久久久久| 婷婷五月色综合香五月| 91色国产在线| 亚洲精品精品亚洲| 五月婷婷丁香六月| 国产高清视频一区三区| 伊人久久大香线| 国产乱了高清露脸对白| 欧美色图12p| 国产丝袜精品丝袜| 手机在线观看国产精品| 国产精品一品二品| www成人在线| 久久天堂电影网| 欧美午夜寂寞| 久久久久久久久久毛片| 亚洲va天堂va国产va久| yw193.com尤物在线| 国产精品大全| 美女网站一区二区| 国产一级精品视频| 久久精品99国产精品酒店日本 | 国产超碰精品| 国产高清不卡无码视频| 国产欧美一区二区精品性色超碰| 精品人妻一区二区三区三区四区| 欧美自拍视频在线观看| 亚洲情侣在线|