1. 程式人生 > >Spring REST 異常處理

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