Spring REST 異常處理
在上一篇中寫到了Spring MVC的異常處理,SpringMVC捕獲到異常之後會轉到相應的錯誤頁面,但是我們REST API ,一般只返回結果和狀態碼,比如發生異常,只向客戶端返回一個500的狀態碼,和一個錯誤訊息。如果我們不做處理,客戶端通過REST API訪問,發生異常的話,會得到一個錯誤頁面的html程式碼。。。這時候怎麼做呢, 我現在所知道的就兩種做法
通過ResponseEntity
通過ResponseEntity接收兩個引數,一個是物件,一個是HttpStatus.
舉例:
@RequestMapping(value="/customer/{id}" ) public ResponseEntity<Customer> getCustomerById(@PathVariable String id) { Customer customer; try { customer = customerService.getCustomerDetail(id); } catch (CustomerNotFoundException e) { return new ResponseEntity<Customer>(HttpStatus.NOT_FOUND); } return new ResponseEntity<Customer>(customer,HttpStatus.OK); }
這種方法的話我們得在每個RequestMapping 方法中加入try catch語句塊,比較麻煩,下面介紹個更簡單點的方法
通過ExceptionHandler註解
這裡跟前面不同的是,我們註解方法的返回值不是一個ResponseEntity物件,而不是跳轉的頁面。
@RequestMapping(value="/customer/{id}" ) @ResponseBody public Customer getCustomerById(@PathVariable String id) throws CustomerNotFoundException { return customerService.getCustomerDetail(id); }
@ExceptionHandler(CustomerNotFoundException.class) public ResponseEntity<ClientErrorInformation> rulesForCustomerNotFound(HttpServletRequest req, Exception e) { ClientErrorInformation error = new ClientErrorInformation(e.toString(), req.getRequestURI()); return new ResponseEntity<ClientErrorInformation>(error, HttpStatus.NOT_FOUND); }
總結:
這裡兩種方法,推薦使用第二種,我們既可以在單個Controller中定義,也可以在標有ControllerAdvice註解的類中定義從而使異常處理對整個程式有效。
相關推薦
Spring REST 異常處理
在上一篇中寫到了Spring MVC的異常處理,SpringMVC捕獲到異常之後會轉到相應的錯誤頁面,但是我們REST API ,一般只返回結果和狀態碼,比如發生異常,只向客戶端返回一個500的狀態碼,和一個錯誤訊息。如果我們不做處理,客戶端通過REST API訪問,發生異常的話,會得到一個錯誤頁面的html
Spring MVC異常處理實例
bsp ips etag label 視圖 uri _id integer ive 以下內容引用自http://wiki.jikexueyuan.com/project/spring/mvc-framework/spring-exception-handling-examp
spring boot 異常處理(轉)
integer stat 全部 control nts custom ref default turn spring boot在異常的處理中,默認實現了一個Embedde
Spring MVC異常處理SimpleMappingExceptionResolver
bean pri 分享圖片 ESS bsh trace 內部實現 ont per Spring MVC異常處理SimpleMappingExceptionResolver【轉】 (2012-12-07 13:45:33) 轉載▼ 標簽: 雜談 分類: 技術
Spring MVC 異常處理 - ResponseStatusExceptionResolver
執行 代碼 pin ces val col resolv use turn 作用在類和方法上面 更改返回的代碼和錯誤消息 類上 通過throw new UserName***Exception()拋出 @ResponseStatus(value=HttpStatus.FO
Spring系列(七) Spring MVC 異常處理
nco 部分 給定 uri too ebo intended 路徑 onf Servlet傳統異常處理 Servlet規範規定了當web應用發生異常時必須能夠指明, 並確定了該如何處理, 規定了錯誤信息應該包含的內容和展示頁面的方式.(詳細可以參考servlet規範文檔)
Spring Boot異常處理詳解
在Spring MVC異常處理詳解中,介紹了Spring MVC的異常處理體系,本文將講解在此基礎上Spring Boot為我們做了哪些工作。下圖列出了Spring Boot中跟MVC異常處理相關的類。 Spring Boot在啟動過程中會根據當前環境進行AutoConfigurat
Spring 梳理 -異常處理
Spring 提供了多種方式將異常轉換為相應 Spring框架提供的通用異常,將異常轉換為HTTP狀態碼 Spring預設會將自身丟擲的異常自動對映到合適的狀態碼,如下是一些示例: 舉個例子,當後端丟擲如下異常(TypeMismatchException異常,往方
Spring Boot -- 異常處理
Spring Boot -- 異常處理 預設的異常處理 自定義的異常處理 BasicErrorController 方式 @ExceptionHandler 註解方式 預設的異常處理 預設的異常處理有兩種方式
SpringBoot系列: Spring專案異常處理最佳實踐
===================================自定義異常類===================================稍具規模的專案, 一般都要自定義一組異常類, 這樣做的好處是:1. 可以充分利用異常的中斷特性, 簡化程式碼的邏輯控制. 2. 在自定義的異常類, 可以設定
Spring Boot & Spring MVC 異常處理的N種方法
預設行為 根據Spring Boot官方文件的說法: For machine clients it will produce a JSON response with details of the error, the HTTP status and the excep
6.1 Spring Boot異常處理
spring boot異常分為5鍾 1.自定義異常頁面 spring boot預設有一套處理異常的機制,出現異常後預設會發送/error請求,如果我們需要自定義頁面展示異常,可以在templates目錄下新建error頁面 error.html <!DOC
spring-mvc 異常處理
頁面處理異常處理方法: 方法一:@ControllerAdvice + @ExceptionHandler @ControllerAdvice public class MyExceptionController { @ExceptionHandler(value={
spring jdbc異常處理原理深度分析
1.異常處理 使用傳統JDBC API時,通過java.sql.SQLException型別來包括一切的異常情況,並沒有異常具體告知,如果要得到具體異常內容要通過sqlexception的getErrorcode得到errorcode然後從具體資料庫提供商提供的errorcode列
Spring Cloud 異常處理
轉載 : https://www.cnblogs.com/yish/p/5850813.html一開始我想著是在Feign的ErrorDecoder上做自定義的異常處理,來實現根據http code丟擲各種異常。但是Feign與Hystrix結合之後,發現一個問題,只要服務呼
Spring 中異常處理方法的總結
前言 在程式設計過程中,我們總是會遇到各種各樣的一樣,受檢異常和非受檢異常,也可以對這些異常進行重寫或者擴充套件,總而言之,這就涉及到一個處理異常的問題。 好的異常處理方式既容易配置又可以保持使用端的友好互動,更為重要的是在出現問題的時候快速的幫助我們定位問題。 事實上
Spring boot 異常處理配置
except plugin Delve compiler cep tid user tps shm 1. 新建Maven項目 exception 2. pom.xml <project xmlns="http://maven.apache.org/
spring統一異常處理
Spring提供了同意的異常處理註解,使用者只需要在錯誤的時候提示資訊即可 實現方式: 在類上新增@ControllerAdvice註解 在方法上新增@ExceptionHandler註解 例如: 1. 自定義一個異常 Abstr
CheckedException和unCheckedException理解及Spring 統一異常處理和封裝
一、CheckedException和UnCheckedException 1.CheckedException已檢查異常 CheckedException繼承自Exception,程式內部無法控制,必須做處理,要麼使用try-atch塊捕獲,要麼throws拋給上一層。
spring 全域性異常處理類
spring全域性異常處理 @ControllerAdvice 註解包含@Component註解,在context:component-scan掃描包的時候,注意掃描方式,需要把異常處理類掃描進去 package com.admin.exceptionc