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;
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章