示例代碼:
public SaveResultModel CheckDog() { SaveResultModel resultModel = null; try { resultModel.IsSuccess = false; } catch (Exception ex) { throw ex; } return resultModel; }
以上對異常的處理方式是非常錯誤,因爲先捕獲再拋出,會丟掉原異常的堆棧信息,反而不容易排查bug了。
正確的處理方式有兩種:
1,不捕獲,全部在最外層捕獲,這樣不會損失異常的堆棧信息;
2,拋出一個新的異常,增加一些自定義消息。如:
public SaveResultModel SaveDog(Dog model) { SaveResultModel saveResult = new SaveResultModel(); try { Dog dog2 = null; dog2.Age = model.Age; } catch (Exception ex) { saveResult.ErrorMsg = ex.Message; saveResult.IsSuccess = false; saveResult.StatusCode = -1; throw new Exception("SaveDog時報錯,"+ex.Message,ex) ; } return saveResult; }