C#异常处理时不应该先捕获再抛出
示例代码:
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; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步