我的方法在许多方面都有所回报。我在执行期间也在很多方面构造newData。无论我返回哪里,我都需要保存并存储构造结果。不要错过“返回”我只是用try-finally块包围代码,所以现在我确定将存储newData。
List<X> newData = new List<X>();
try
{
....
update newData
.....
return;
.....
....
update newData
....
update newData
return;
.....
return;
} finally
{
// copy newData to data
}
但我没有发现任何异常,并且此代码不适用于异常。一般来说是否可以接受,或者你可以建议另一种更好的方法?
答案 0 :(得分:6)
我建议将try
块中的代码重构为新方法:
data = CreateList();
...
private List<X> CreateList()
{
List<X> list = new List<X>();
// It's fine to return list from any point here...
}
答案 1 :(得分:2)
如果某些内容失败(将其视为故障安全机制),包括原子性等,则finally的用法是作为备份。
一般来说,你的方法的整个结构是错误的,你可以重构它,因为获得所有这些返回通常意味着你可以采取另一种方法(例如在建议的评论中使用开关)。