如何从遇到错误但预期类型的​​方法返回

时间:2018-05-10 15:58:57

标签: c# design-patterns

假设我有一个返回List<int>的方法,并且在获取此List<int>的过程中发生错误,导致无法收集数据。在方法中处理此异常的最佳方法是什么?该程序期望该方法返回一个List,但由于出于任何原因发生错误,它不再能够执行此操作。我应该从该方法返回什么?它是由调用代码捕获的自定义异常吗?

private List<int> GetData()
{
  List<in> theData = new List<int>();
  theData = ProcessThatGetsData(); //Error occurs in here
  return theData;  //What should be returned here?
}

2 个答案:

答案 0 :(得分:1)

如果你想捕获异常并处理它,一种方法是使用这样的返回对象:

        private OperationResult GetData()
        {
            List<int> theData = new List<int>();
            try
            {
                theData = ProcessThatGetsData(); //Error occurs in here
                return new OperationResult { Success = true, Data = theData };
            }
            catch (Exception exc)
            {
                return new OperationResult { Success = false };
            }
            return theData;  //What should be returned here?
        }

        public class OperationResult
        {
            public bool Success { get; set; }
            public IList<int> Data { get; set; }
        }

这是一个选项,但是我的偏好是将try catch语句放在这里,只在你真正需要它的那一层......在这种情况下你的代码没有&#39;需要改变或担心返回类型。

无论您何时调用GetData方法,都将调用放在try / catch语句中,您应该没问题。

请记住,始终在必须处理异常的情况下处理异常,不要过度处理。

希望这有帮助

答案 1 :(得分:0)

  

是否是由调用代码

捕获的自定义异常

是的,只是让异常发生,调用方法负责处理异常(通过try-catch块)。