一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringBoot學習之全局異常處理設置(返回JSON)

SpringBoot學習之全局異常處理設置(返回JSON)

2021-04-05 12:19-貧寒豌豆 Java教程

本篇文章主要介紹了SpringBoot學習之全局異常處理設置(返回JSON),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

SpringBoot學習——全局異常處理設置(返回JSON)

需求

  1. 現在習慣使用ajax的方式發起請求,所以經常需要服務端返回一個json或者字符串。
  2. 控制全局的異常處理。
  3. 如果在單個方法中使用try,catch把方法包裹起來,工作量大,而且會異常的拋出而導致@Transactional注解的方法事務不會回滾。

說明

  1. 使用@ControllerAdvice注解
  2. 使用@ExceptionHandler注解

@ControllerAdvice

該注解是spring2.3以后新增的一個注解,主要是用來Controller的一些公共的需求的低侵入性增強提供輔助,作用于@RequestMapping標注的方法上。

@ExceptionHandler

該注解是配合@ExceptionHandler一起使用的注解,自定義錯誤處理器,可自己組裝json字符串,并返回到頁面。

代碼

創建一個全局異常處理類,如下:

如果向實現,不同的異常有不同的操作的話,只需要將 @ExceptionHandler的value的值不一樣就可以了,可以同時實現多個不同的異常處理,但不能出現包含狀態。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
 
@ControllerAdvice
@ResponseBody
public class GlobalExceptionHandler {
 
  /**
   * 所有異常報錯
   * @param request
   * @param exception
   * @return
   * @throws Exception
   */
  @ExceptionHandler(value=Exception.class)
  public String allExceptionHandler(HttpServletRequest request,
      Exception exception) throws Exception
  {
    exception.printStackTrace();
    System.out.println("我報錯了:"+exception.getLocalizedMessage());
    System.out.println("我報錯了:"+exception.getCause());
    System.out.println("我報錯了:"+exception.getSuppressed());
    System.out.println("我報錯了:"+exception.getMessage());
    System.out.println("我報錯了:"+exception.getStackTrace());
    return "服務器異常,請聯系管理員!";
  }
}

模擬一個拋出異常類,下例是拋出一個空指針異常和分母不為異常

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
 
@Controller
@RequestMapping("/exceptionTest")
@ResponseBody
public class ExceptionTest {
  @RequestMapping("/test")
  public String test(){
    Message msg = null;
    msg.toString();
    createException();
    return "我是正常的";
  }
 
  private void createException(){
    int i = 5/0;
  }
}

啟動Springboot,執行結果

因為返回的是字符串,也可以使用json工具類來封裝,返回一個json字符串  

SpringBoot學習之全局異常處理設置(返回JSON) 

SpringBoot學習之全局異常處理設置(返回JSON)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/flygoa/article/details/75284755

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品久久久久久久久久香蕉 | 国产一区二区在线看 | 大胆暴露亚洲美女xxxx | 91制片厂果冻星空传媒3xg | 欧美日韩中文国产一区 | 国产亚洲精品福利在线 | 国产梦呦精品 | 涩色爱| 国产在线98福利播放视频免费 | 亚洲精品6久久久久中文字幕 | 我不卡影院手机在线观看 | 久99视频精品免费观看福利 | 香蕉91xj.cc| 成人18视频在线观看 | 日本大尺度动漫在线观看缘之空 | 亚洲性色永久网址 | 99这里只有精品66视频 | 欧美精品一区二区在线观看播放 | 亚洲国产韩国欧美在线不卡 | 免费精品一区二区三区在线观看 | 天堂樱桃bt在线www | 四虎影院精品在线观看 | 高清不卡免费一区二区三区 | a级影视| 日韩不卡一区二区三区 | 欧美视频一二三区 | 99热久热这里只精品 | 国产精品一区二区三 | 欧美成人中文字幕在线看 | 激情视频亚洲 | 千金奴隶在线 | 久久亚洲精品AV无码四区 | 日本精品一区二区在线播放 | 成人综合婷婷国产精品久久免费 | 探花 在线 | 国产51 | 俄罗斯15一16处交 | 人皮高跟鞋在线观看 | 成年人在线观看免费视频 | 欧美大片一区二区 | 99热国产这里只有精品99 |