try
{
operation1();
operation2();
...
}
finally
{
try
{
finalizer_operation1();
finalizer_operation2();
}
finally
{
very_critical_finalizer_operation_which_should_occurs_at_the_end();
}
}
这样可以吗?将终结器作为另一个 try/finally
block (因为 finalizer_operationX()
可能会抛出并且我必须确保 very_critical...()
会发生在最后。
快速谷歌搜索 try in finally block 没有任何结果(如果你给我一个重复的链接将删除问题),它应该工作,但我不确定设计和可能存在的问题。
最佳答案
我不会这样写代码。我不喜欢嵌套 try/catch/finally 结构。我更喜欢每种方法一个。
我的偏好是将每个调用包装在其自己的方法中。
try
{
operation1();
operation2();
...
}
finally
{
cleanup();
}
public void cleanup() {
try
{
finalizer_operation1();
finalizer_operation2();
}
finally
{
very_critical_finalizer_operation_which_should_occurs_at_the_end();
}
}
关于c# - 在 finally block 中尝试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26888074/