《Asp.Net Core3 + Vue3入坑教程》 - 6.異常處理與UserFriendlyException
阿新 • • 發佈:2021-03-08
# 簡介
《Asp.Net Core3 + Vue3入坑教程》 此教程適合新手入門或者前後端分離嘗試者。可以根據圖文一步一步進操作編碼也可以選擇直接檢視原始碼。每一篇文章都有對應的原始碼
# 目錄
#### 《Asp.Net Core3 + Vue3入坑教程》系列教程目錄
Asp.Net Core後端專案
1. [後端專案搭建與Swagger配置步驟](https://www.cnblogs.com/Iannnnnnnnnnnnn/p/14435589.html)
2. [配置CROS策略解決跨域問題](https://www.cnblogs.com/Iannnnnnnnnnnnn/p/14438539.html)
3. [AutoMapper & Restful API & DI](https://www.cnblogs.com/Iannnnnnnnnnnnn/p/14438949.html)
4. [EF Core & Postgresql](https://www.cnblogs.com/Iannnnnnnnnnnnn/p/14438885.html)
5. [.Net Core 3升級成 .Net 5 & JWT](https://www.cnblogs.com/Iannnnnnnnnnnnn/p/14444048.html)
6. [**(本文)異常處理與UserFriendlyException**](https://www.cnblogs.com/Iannnnnnnnnnnnn/p/14495329.html)
Vue3 前端專案
1. [使用vue-cli建立vue專案](https://www.cnblogs.com/Iannnnnnnnnnnnn/p/14444396.html)
2. [(暫未發表敬請期待...)使用Ant Design of Vue編寫頁面 & vue-router 初試](https://www.cnblogs.com/Iannnnnnnnnnnnn/p/14452124.html)
3. [(暫未發表敬請期待...)將Antd導航選單與vue-router繫結](https://www.cnblogs.com/Iannnnnnnnnnnnn/p/14489900.html)
4. [(暫未發表敬請期待...) 儲存使用者登入狀態vuex初試](https://www.cnblogs.com/Iannnnnnnnnnnnn/p/14494481.html)
# 本文簡介
本文為《Asp.Net Core3 + Vue3入坑教程》系列教程的後端第六篇 - 異常處理與UserFriendlyException[上文](https://www.cnblogs.com/Iannnnnnnnnnnnn/p/14444048.html)已經為Simple專案升級了SDK並且應用了JWT,本文繼續為Simple專案增加異常處理與使用友好異常(UserFriendlyException)。
為什麼需要使用友好異常的方式進行開發呢?
在很多情況下,我們在一個方法中往往包含著==校驗引數==與==返回結果==兩個動作,這時候我們的返回結果就需要考慮用物件來包裹==校驗結果==與==返回結果==。 如果我們使用友好異常,預設方法能順利通過校驗並返回正確的結果,如果校驗出現失敗的情況則將==失敗原因通過友好異常的方式返回給呼叫者==,可以讓方法的返回內容不需要考慮校驗的結果,程式碼更簡潔明瞭!
> 使用者友好參照了開源專案ABP專案 https://docs.abp.io/zh-Hans/abp/latest/Exception-Handling
# 異常處理與UserFriendlyException
#### 第一步先增加測試程式碼,修改SqlCommanderRepo.cs
程式碼調整如下:
```
using Simple_Asp.Net_Core.Models;
using Simple_Asp.Net_Core.ServiceProvider;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Simple_Asp.Net_Core.Data
{
public class SqlCommanderRepo : ICommanderRepo
{
private readonly CommanderContext _context;
public SqlCommanderRepo(CommanderContext context)
{
_context = context;
}
public void CreateCommand(Command cmd)
{
if (cmd == null)
{
throw new ArgumentNullException(nameof(cmd));
}
_context.Commands.Add(cmd);
}
public void DeleteCommand(Command cmd)
{
if (cmd == null)
{
throw new ArgumentNullException(nameof(cmd));
}
_context.Commands.Remove(cmd);
}
public IEn