示例代码:
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; }