当前位置: 首页 > 面试题库 >

python捕获异常并继续尝试阻止

卫深
2023-03-14
问题内容

发生异常后,我可以返回执行try块吗?(目标是写得更少)例如:

try:
    do_smth1()
except:
    pass

try:
    do_smth2()
except:
    pass

try:
    do_smth1()
    do_smth2()
except:
    ??? # magic word to proceed to do_smth2() if there was exception in do_smth1

问题答案:

不,你不能那样做。这就是Python具有其语法的方式。一旦由于异常而退出try块,就无法返回。

那for循环呢?

funcs = do_smth1, do_smth2

for func in funcs:
    try:
        func()
    except Exception:
        pass  # or you could use 'continue'

但是请注意,裸露裸露是不明智的做法except。您应该改为捕获特定的异常。我Exception之所以这么做,是因为在不知道方法可能会抛出什么异常的情况下,这是我所能做的。



 类似资料:
  • 我在PostgreSQL中有一个表,它有许多记录和唯一的键 然后我从Excel导入数据并将其映射到列表。最后,我有一些像 包裹包含大约20,000条记录,并且可以包含违反唯一约束的记录。在这种情况下,我需要跳过该记录并继续插入。 现在我得到了一个预期的错误 微软EntityFrameworkCore。DbUpdateException:更新条目时出错。有关详细信息,请参见内部异常--- 如何忽略它

  • 前几天,我在我们的一个项目中看到一些代码,它们使用try-catch并重新抛出捕获的异常,如下所示: 除了catch块中的异常之外,没有做任何其他操作,所以我甚至不确定它为什么会被抛出。我看不出再次抛出同一个异常并对该异常不做任何处理有什么好处。 如果重新抛出catch块中捕获的异常,C#如何处理?它是否陷入了无限抛接球循环?还是说它最终会放弃试一试?

  • 问题内容: 是否可以捕获异常并继续执行脚本? 问题答案: 当然,只要在要继续执行的地方捕获异常即可。 当然,这存在静默删除可能是非常重要的错误的问题。SomeOperation()可能会失败,从而导致其他难以解决的细微问题,但您永远不会知道是否静默删除该异常。

  • 问题内容: 我的代码中有一个try … except块,当抛出异常时。我真的只想继续编写代码,因为在这种情况下,所有内容仍然可以正常运行。问题是,如果您将except:块保留为空或不执行任何操作,则会出现语法错误。我不能使用continue,因为它不在循环中。我可以使用一个关键字来告诉代码继续运行吗? 问题答案: except Exception: pass 适用于pass语句的Python文档

  • 我有一个存储过程似乎没有正确记录错误。 代码有错误,但 catch 块似乎未生效。 try块相当长,但错误部分很简单,并且在最后出现,所以我已经对此进行了预测。 proc失败的错误是我们的老朋友“列名或提供的值的数量与表定义不匹配”。我已经修复了这个错误 - 这是一个愚蠢的懒惰错误 - 但我感到困惑为什么我的错误日志记录过程似乎没有工作 - 没有行入到我的 ExtractsErrorLog 表中。

  • 有可能在SWIFT中捕捉异常吗?给定以下代码: 有可能防止异常使整个程序崩溃吗?也就是说,在Objective-C中,与以下内容相对应的Swift等价是什么: