发生异常后,我可以返回执行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等价是什么: