不中断的异常处理

4

为了处理一些运行时错误,我的源代码的某些部分嵌套在try语句中,同时每一行都必须尝试执行,即使前一行由于运行时错误未被执行。

目前我的代码看起来像这样:

try

  try
  //statement1
  except 
  end;

  try
  //statement2
  except 
  end;

  try
  //statement3
  except 
  end;

finally
//something
end;

我非常确定这样做是错误的,即使最终输出结果很好,我还需要这样做数十行。

是否有更好的实现方式?

1个回答

5
如果你希望每个语句都被执行,那么你需要像你所做的那样编写代码。请注意,在这种情况下,你可能不需要 try/finally,因为你已经吞掉了所有的异常。
然而,我觉得代码看起来有点奇怪。我想知道你是否真的需要每一个语句都被执行。通常你会这样写:
try
  statement1;
  statement2;
  statement3;
except
  //handle exceptions
end;

如果 statement1 抛出异常,那么其他两行代码将不会执行。

然而,更常见的情况是根本不处理异常,直接将它们传递到更高级别的处理程序。如果你使用异常来做常规逻辑判断,那么这被认为是不好的实践。

我认为,如果您能发布一些处理异常的代码以及一些预期发生的异常细节,那么我们可以给您一些更具体的建议。


2
+1 - 这有一种“你做错了”的味道。也许他正在移植以“on error resume next”开头的VB代码。 - afrazier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接