1. 程式人生 > >《Asp.Net Core3 + Vue3入坑教程》 - 6.異常處理與UserFriendlyException

《Asp.Net Core3 + Vue3入坑教程》 - 6.異常處理與UserFriendlyException

# 簡介 《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