前言
C#中咱們若是操做過程當中出現錯誤一勝敗都用throw拋出異常,而後前端接收到後會直接顯示出來服務端拋出的異常是什麼。前端
先看一下未修改前的使用效果android
咱們直接在.net Core的API裏設置校驗的通信時間和簽名,若是不對直接拋出異常。微信
C# .net Core的代碼
app
Android的代碼的顯示效果async
在android中咱們直接看到i當rsp.body()返回的是空,咱們就直接捕獲到錯誤的信息顯示出來spa
看看運行的時候效果.net
能夠看到已經出來異常了,可是顯示註冊失敗後面一串XML的信息,3d
在服務端拋的異常是blog
或utf-8
並非咱們想到的結果,我也看不出來究竟是什麼緣由,錯誤出如今哪。遇到空上的狀況咱們應該怎麼處理呢
修改服務端代碼
若是想要實現服務端拋出的異常在前端能接收到,咱們須要在服務端進行修改。在.net Core裏面Startup.cs文件裏的Configure進行處理一下。
能夠看到,原來的處理裏面經過app.UseExceptionHandler直接就跳轉到一個錯誤頁面,因此也形成了接收到的數據是一些XML的數據。咱們如今把這裏改造一下。
咱們先把這上面這一段屏蔽了
而後從新寫一個app.UserExeceptionHandler
app.UseExceptionHandler(t =>
{
t.Run(async context =>
{
var ex = context.Features.Get<IExceptionHandlerFeature>()?.Error;
string msg = ex == null ? "發生錯誤。" : ex.Message;
context.Response.ContentType = "text/plain;charset=utf-8";
await context.Response.WriteAsync(msg);
});
});
而後咱們從新編譯和發佈一下
咱們再次用android程序調用一下,看看
能夠看出來,上面拋出的異常信息已經能夠在前端接收到顯示出來了。
-END-
長按下方二維碼關注
本文分享自微信公衆號 - 微卡智享(VaccaeShare)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。