假设我有一个返回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?
}
答案 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块)。