SpringBoot拾級而上·錯誤處理

一钮蛛、友好的頁面
編寫一個錯誤的方法
FastJsonController 類中新增昂拂,

    @RequestMapping("/testerror")
    @ResponseBody
    public User testError() {
        User user = new User();
        user.setId(2);
        user.setUsername("jack2");
        user.setPassword("jack246");
        user.setBirthday(new Date());
        // 模擬異常
        int i = 1/0;
        return user;
    }

訪問 http://127.0.0.1:8081/fastjson/testerror受神,頁面顯示

testerrorpage.png

當(dāng)系統(tǒng)報錯時,返回到頁面的內(nèi)容通常是一些報錯的代碼段格侯,這種顯示對用戶來說不友好鼻听,因此我們需要自定義一個友好的提示系統(tǒng)異常的頁面财著。
在 src/main/resources 下創(chuàng)建 /public/error,在該目錄下再創(chuàng)建一個名為 5xx.html 文件撑碴,該頁面的內(nèi)容就是當(dāng)系統(tǒng)報錯時返回給用戶瀏覽的內(nèi)容撑教。
例如,我們新建一個500.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>訪問異常 - 500</title>
</head>
<body>

<div class="">
    <h2>友善的報錯信息 500</h2>
</div>
</body>
</html>

路徑時固定的醉拓,Spring Boot 會在系統(tǒng)報錯時將返回視圖指向該目錄下的文件伟姐。


error500.png

二、全局異常捕獲
如果項目前后端是通過 JSON 進(jìn)行數(shù)據(jù)通信亿卤,則當(dāng)出現(xiàn)異常時可以常用如下方式處理異常信息愤兵。
編寫一個類充當(dāng)全局異常的處理類,需要使用 @ControllerAdvice 和 @ExceptionHandler 注解排吴。
其中秆乳,方法名為任意名,入?yún)⒁话闶褂?Exception 異常類傍念,方法返回值可自定義矫夷。

package com.springboot.springboot_web.base;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

@ControllerAdvice
public class GlobalDefaultExceptionHandler {

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Map<String,Object> defaultExceptionHandler(Exception e) {

        Map<String,Object> map = new HashMap<String,Object>();
        map.put("code", 500);
        map.put("msg", e.getMessage());
        return map;
    }
}

訪問 http://127.0.0.1:8081/fastjson/testerror,頁面返回

{ "msg":"/ by zero", "code":500 }

我們可以看到憋槐,如果同時做了友好的頁面和全局異常捕獲,會優(yōu)先顯示全局異常捕獲的內(nèi)容淑趾。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阳仔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扣泊,更是在濱河造成了極大的恐慌近范,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件延蟹,死亡現(xiàn)場離奇詭異评矩,居然都是意外死亡,警方通過查閱死者的電腦和手機阱飘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門斥杜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人沥匈,你說我怎么就攤上這事蔗喂。” “怎么了高帖?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵缰儿,是天一觀的道長。 經(jīng)常有香客問我散址,道長乖阵,這世上最難降的妖魔是什么宣赔? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮瞪浸,結(jié)果婚禮上儒将,老公的妹妹穿的比我還像新娘。我一直安慰自己默终,他們只是感情好椅棺,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著齐蔽,像睡著了一般两疚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上含滴,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天诱渤,我揣著相機與錄音,去河邊找鬼谈况。 笑死勺美,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的碑韵。 我是一名探鬼主播赡茸,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼祝闻!你這毒婦竟也來了占卧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤联喘,失蹤者是張志新(化名)和其女友劉穎华蜒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體豁遭,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡叭喜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蓖谢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捂蕴。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蜈抓,靈堂內(nèi)的尸體忽然破棺而出启绰,到底是詐尸還是另有隱情,我是刑警寧澤沟使,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布委可,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏着倾。R本人自食惡果不足惜拾酝,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卡者。 院中可真熱鬧蒿囤,春花似錦、人聲如沸崇决。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恒傻。三九已至脸侥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盈厘,已是汗流浹背睁枕。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沸手,地道東北人外遇。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像契吉,于是被迫代替她去往敵國和親跳仿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架捐晶,建立于...
    Hsinwong閱讀 22,353評論 1 92
  • 1塔嬉、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,969評論 3 119
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)租悄,斷路器,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 爸媽恩袱,我不是不想你們泣棋,只是不敢想你們 今天遠(yuǎn)在老家的老媽打電話給我,我當(dāng)時在工作畔塔,跑出來到樓梯口接電話潭辈,我知道她們...
    落葉孤煙閱讀 229評論 1 1