一般開發中會遇到很多需要自定義拋異常的情況,但是拋出的自定義異常又需要和其他異常(空值引用,數組越界,伺服器崩潰等)區分開,則可以用如下代碼簡單封裝。 public static void ThrowException(string exceptionMessage) { ...
一般開發中會遇到很多需要自定義拋異常的情況,但是拋出的自定義異常又需要和其他異常(空值引用,數組越界,伺服器崩潰等)區分開,則可以用如下代碼簡單封裝。
public static void ThrowException(string exceptionMessage) { Exception ex = new Exception(exceptionMessage); ex.Data[0] = 1; throw ex; } public static void ExceptionCreate(ref ResultData revalue, Exception ex) { if (ex.Data!=null&&ex.Data.Count>0&&(int)ex.Data[0] == 1) revalue.message = ex.Message; else revalue.message = "系統錯誤,請聯繫管理員!"; revalue.success = false; }
其中ResultData也是簡單封裝的一個用來記錄返回Json的類:
public class ResultData { /// <summary> /// 是否成功 /// </summary> public bool success { get; set; } /// <summary> /// 服務端消息 /// </summary> public string message { get; set; } /// <summary> /// 錯誤代碼 /// </summary> public long code { get; set; } /// <summary> /// 數據實體 /// </summary> public dynamic data { get; set; } /// <summary> /// 數據總數(用於分頁) /// </summary> public int TotalDatas { get; set; } public ResultData() { success = true; } } public class ResultData<T> { /// <summary> /// 是否成功 /// </summary> public bool success { get; set; } /// <summary> /// 服務端消息 /// </summary> public string message { get; set; } /// <summary> /// 錯誤代碼 /// </summary> public long code { get; set; } /// <summary> /// 數據實體 /// </summary> public T data { get; set; } /// <summary> /// 數據總數(用於分頁) /// </summary> public int TotalDatas { get; set; } public ResultData() { success = true; } }
接下來就是使用方法了:
public ActionResult HasPermission() { ResultData revalue = new ResultData(); try { //不滿足指定條件,拋出異常 if(false) SiteCommon.ThrowException("自定義的異常信息,如:許可權不足"); } catch (Exception ex) { SiteCommon.ExceptionCreate(ref revalue,ex); } return Json(revalue); }