我的代码中有一个try块的情况,我想忽略一个特定的异常,所有其他的异常都应该被引发。
例如:
try:
blah
except <exception> as e:
raise Exception(e)在这种情况下,我希望所有的异常都被抛出,除了一种情况,如果异常是"query not kind“,我必须忽略它。
我如何忽略这个单一的异常?
我可以使用多个except块,但如何定义异常?
发布于 2021-01-22 16:42:37
你可以给出这样的东西:
try:
print(x)
except NameError:
print("Variable x is not defined")
except:
print("Something else went wrong")在本例中,您希望捕获NameError并指定一条消息。对于所有其他消息,您需要指定另一条消息。
假设您想忽略NameError,那么您可以只使用continue或pass。
或者,您也可以引发异常。
示例如下:
x = -1
if x < 0:
raise Exception("Sorry, no numbers below zero")所以你可以使用所有这些的组合来得到你想要的东西。
如果您想了解有关exception的更多详细信息,请参阅以下链接:
https://docs.python.org/3/tutorial/errors.html
https://www.w3schools.com/python/python_try_except.asp
https://realpython.com/python-exceptions/
在堆栈溢出时(正如Gino突出显示的那样),请参见Handling all but one exception
发布于 2021-01-22 17:06:59
作为@Joe Ferndz答案的替代方案,如果您不想引发异常,但仍然希望退出代码块,您可以在contextlib模块中使用suppress:
from contextlib import suppress
with suppress(ValueError):
print('hello world')
raise ValueError
print('this will not be printed')在这种情况下,该块在raise ValueError时仍然退出,但不会引发异常。
https://stackoverflow.com/questions/65841806
复制相似问题