日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring boot定制错误json数据

發布時間:2025/3/20 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring boot定制错误json数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定制錯誤json數據

客戶端訪問
如果,程序出錯了
返回的json數據,需要定制的

定制錯誤頁面
在模板文件夾、或者靜態資源文件夾下
放置一個error文件夾,里面存放錯誤狀態碼對應的頁面

這些頁面,就是錯誤頁面
在錯誤頁面,可以獲取相關的錯誤信息

自定義異常

UserNotExistException
為了使異常拋出,繼承運行時異常
寫一個無參的構造器,調用super,傳遞一個message

package com.atguigu.springboot.exception;public class UserNotExistException extends RuntimeException {public UserNotExistException() {super("用戶不存在");} }

Controller

根據指定用戶,拋出自定義的異常

@ResponseBody @RequestMapping("/hello") public String hello(@RequestParam("user") String user){if(user.equals("aaa")){throw new UserNotExistException();}return "Hello World"; }

定義錯誤頁面

<main role="main" class="col-md-9 ml-sm-auto col-lg-10 pt-3 px-4"><h1>status:[[${status}]]</h1><h2>timestamp:[[${timestamp}]]</h2><h2>exception:[[${exception}]]</h2><h2>message:[[${message}]]</h2> </main>

瀏覽器訪問

自定義異常處理器

MyExceptionHandler
專門用來處理異常,需要添加@ControllerAdvice注解

處理什么異常,需要添加@ExceptionHandler注解
參數,直接寫Exception,表示處理所有異常

@ControllerAdvice public class MyExceptionHandler {//1、瀏覽器客戶端返回的都是json@ResponseBody@ExceptionHandler(UserNotExistException.class)public Map<String, Object> handleException(Exception e) {Map<String, Object> map = new HashMap<>();map.put("code", "user.notexist");map.put("message", e.getMessage());return map;}}

客戶端訪問
返回自定義,錯誤json數據

訪問頁面
也是返回自定義,錯誤json數據

缺點

沒有自適應效果
瀏覽器,客戶端返回的都是json數據

ErrorMvcAutoConfiguration

錯誤自動配置

BasicErrorController
處理/error請求

/error請求是自定義的
瀏覽器,返回頁面
客戶端,返回json數據

MyExceptionHandler

修改自定義異常處理器
轉發到/error請求

@ControllerAdvice public class MyExceptionHandler {//1、瀏覽器客戶端返回的都是json // @ResponseBody // @ExceptionHandler(UserNotExistException.class) // public Map<String, Object> handleException(Exception e) { // Map<String, Object> map = new HashMap<>(); // map.put("code", "user.notexist"); // map.put("message", e.getMessage()); // return map; // }@ExceptionHandler(UserNotExistException.class)public String handleException(Exception e, HttpServletRequest request) {Map<String, Object> map = new HashMap<>();//傳入我們自己的錯誤狀態碼 4xx 5xx/*** Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");*/request.setAttribute("javax.servlet.error.status_code", 500);map.put("code", "user.notexist");map.put("message", "用戶出錯啦");request.setAttribute("ext", map);//轉發到/errorreturn "forward:/error";} }

注意

需要傳入,異常的錯誤狀態碼
不傳的話,默認狀態碼為200
跳轉到默認頁面

存在問題
定制的錯誤數據,無法攜帶出去

總結

以上是生活随笔為你收集整理的Spring boot定制错误json数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。