5

我的方法在很多方面返回。我在执行过程中也在很多方面构造了 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    
}

但我没有捕捉到任何异常,而且这段代码不适用于异常。一般情况下是否可以接受,或者您可以建议另一种更好的方法?

4

2 回答 2

6

我建议将try块中的代码重构为新方法:

data = CreateList();

...

private List<X> CreateList()
{
    List<X> list = new List<X>();
    // It's fine to return list from any point here...
}
于 2012-05-14T12:33:47.873 回答
2

finally 的使用旨在作为失败时的备份(将其视为故障安全机制),包括原子性等。

通常,您的方法的整个构造都是错误的,您可以对其进行重构,因为获得所有这些回报通常意味着您可以采用另一种方法来处理事情(例如在建议的评论中使用开关)。

于 2012-05-14T12:36:21.357 回答