【发布时间】:2014-07-09 04:47:03
【问题描述】:
我今天早些时候问过的一位高级用户在another question 上的评论建议最好交换 try/finally 和 try/except 的顺序。
所以,不要这样:
try
try
//some code
//something that throws an exception, eg: EIndexOutOfRangeException
//more code
except on E : EIndexOutOfRangeException do begin .... end;
finally
// some cleanup code
end;
它将 try/finally 嵌套在里面,try/except 在外面:
try
try
//some code
//something that throws an exception, eg: EIndexOutOfRangeException
//more code
finally
// some cleanup code
end;
except on E : EIndexOutOfRangeException do begin .... end;
end;
我想知道什么时候使用这个成语是合适的和一个好主意,是否存在不应该使用的特殊情况?为什么偏爱一个而不是另一个?我想清理代码中抛出的异常将是主要考虑因素,因为我想如果最终抛出异常,它可以抑制其中一个异常,但可以防止意外的错误冒泡?
【问题讨论】:
-
这完全取决于您作为 cmets 提供的代码。