嵌套try/catch语句不好吗?

5 投票
2 回答
567 浏览
提问于 2025-04-16 16:48

我现在的情况是:

try:
  try:
    condition
  catch

  try:
    condition
  catch

catch
 major failure

这样写代码不好吗?会不会显得太杂乱,或者这样做有什么影响呢?

2 个回答

3

不,这种情况还是比较常见的(不过这里用的关键词是 except,而不是 catch)。这要看你需要做什么以及设计的方式。

不过,有一点确实不好,我看到的太多了,就是捕获顶层的 Exception 类,而不是更具体的错误类型(比如说 KeyError)。或者是抛出同样的错误。

2

我不会直接下结论说“这不好”,因为有时候你可能真的需要它。Python 有时候故意抛出异常,而不是让你去询问(这是否...?)[这就是 EAFP 的理念],在某些情况下,嵌套使用 try/catch 是有用的——当这样做符合代码的逻辑流程时。

不过我猜大多数时候你并不需要这样做。所以在你的情况下,问一个更好的问题就是给出一个具体的例子,说明你认为在什么情况下需要这样的代码。

撰写回答