Asp.netCore3.0 WebApi從0到1手摸手教你寫【6】增加接口異常處理

當(dāng)用戶調(diào)用我們接口發(fā)生異常時(shí)太闺,默認(rèn)情況下會返回一堆錯(cuò)誤信息嘁圈,這樣既不友好最住,同時(shí)也會暴露服務(wù)器相關(guān)的一些敏感信息。有人可能會說轧粟,我可以在每段程序添加try catch 語句,這樣就不會返回錯(cuò)誤信息了,那萬一哪一天你忘記寫了兰吟,或者你同事也沒有寫通惫,不還是解決不了這個(gè)問題嗎?今天我們就來給之前寫的webapi增加個(gè)異常處理混蔼。

增加異常處理類

在XXX.api項(xiàng)目下新增一個(gè)類履腋,起名MyExceptionFilter.cs(這個(gè)名字是自己起的,可以隨意拄丰,但是推薦最后要以ExceptionFilter結(jié)尾)然后繼承IExceptionFilter府树。當(dāng)接口出現(xiàn)異常時(shí)我們統(tǒng)一返回一段json字符串{ "code": 0, "message": "接口開小差了" },剩下的代碼如下料按。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

namespace XXX.api
{
    /// <summary>
    /// 自定義webapi異常處理
    /// </summary>
    public class MyExceptionFilter : IExceptionFilter
    {
        /// <summary>
        /// 發(fā)送異常時(shí)執(zhí)行的代碼
        /// </summary>
        /// <param name="context"></param>
        public void OnException(ExceptionContext context)
        {
            Models.RetModel ret = new Models.RetModel();
            ret.code = 0;
            ret.message = "接口開小差了";
            string errRet= Newtonsoft.Json.JsonConvert.SerializeObject(ret);
            if (context.ExceptionHandled==false)
            {
                context.Result = new ContentResult
                {
                    Content = errRet,
                    StatusCode = StatusCodes.Status200OK,
                    ContentType="application/json"
                };
            }
            context.ExceptionHandled = true;
        }
        /// <summary>
        /// 異步發(fā)送異常時(shí)執(zhí)行的代碼
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public Task OnExceptionAsync(ExceptionContext context)
        {
            OnException(context);
            return Task.CompletedTask;
        }
    }
}

配置Startup.cs

在ConfigureServices中添加過濾器,MyExceptionFilter就是上面我們自定義的異常過濾器

 services.AddControllers(option=> {
                option.Filters.Add(new MyExceptionFilter());
            });

測試

寫完代碼測試载矿,是一個(gè)程序員分內(nèi)之事垄潮。
為了觸發(fā)異常,我們修改下數(shù)據(jù)庫連接字符串闷盔,把數(shù)據(jù)庫名稱改成其它名字弯洗,這樣在查數(shù)據(jù)庫的時(shí)候就會出現(xiàn)異常了。
我們使用postman或者Swagger接口文檔來測試逢勾,結(jié)果如下:


測試結(jié)果

接口拋出了異常牡整,將一段自定義的代碼返回給了客戶。

今天的教程就到這里了溺拱,項(xiàng)目已經(jīng)上傳github逃贝,地址如下:https://github.com/xiaxiaoqian/NetCore3.0-WebApi

求贊

寫作不易,如果這篇文章對你有用請給作者一個(gè)贊吧迫摔!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沐扳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子句占,更是在濱河造成了極大的恐慌沪摄,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纱烘,死亡現(xiàn)場離奇詭異杨拐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)凹炸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門戏阅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人啤它,你說我怎么就攤上這事奕筐〔斩唬” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵离赫,是天一觀的道長芭逝。 經(jīng)常有香客問我,道長渊胸,這世上最難降的妖魔是什么旬盯? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮翎猛,結(jié)果婚禮上胖翰,老公的妹妹穿的比我還像新娘。我一直安慰自己切厘,他們只是感情好萨咳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疫稿,像睡著了一般培他。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上遗座,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天舀凛,我揣著相機(jī)與錄音,去河邊找鬼途蒋。 笑死猛遍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的号坡。 我是一名探鬼主播螃壤,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼筋帖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起冤馏,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤日麸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后逮光,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體代箭,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年涕刚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嗡综。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡杜漠,死狀恐怖极景,靈堂內(nèi)的尸體忽然破棺而出察净,到底是詐尸還是另有隱情,我是刑警寧澤盼樟,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布氢卡,位于F島的核電站,受9級特大地震影響晨缴,放射性物質(zhì)發(fā)生泄漏译秦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一击碗、第九天 我趴在偏房一處隱蔽的房頂上張望筑悴。 院中可真熱鬧,春花似錦稍途、人聲如沸阁吝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽求摇。三九已至,卻和暖如春殊者,著一層夾襖步出監(jiān)牢的瞬間与境,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工猖吴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留摔刁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓海蔽,卻偏偏與公主長得像共屈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子党窜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

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