首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何忽略Python中的一个特殊异常?

如何忽略Python中的一个特殊异常?
EN

Stack Overflow用户
提问于 2021-01-22 16:39:30
回答 2查看 268关注 0票数 0

我的代码中有一个try块的情况,我想忽略一个特定的异常,所有其他的异常都应该被引发。

例如:

代码语言:javascript
运行
复制
try:
 blah
except <exception> as e:
 raise Exception(e)

在这种情况下,我希望所有的异常都被抛出,除了一种情况,如果异常是"query not kind“,我必须忽略它。

我如何忽略这个单一的异常?

我可以使用多个except块,但如何定义异常?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-22 16:42:37

你可以给出这样的东西:

代码语言:javascript
运行
复制
try:
  print(x)
except NameError:
  print("Variable x is not defined")
except:
  print("Something else went wrong")

在本例中,您希望捕获NameError并指定一条消息。对于所有其他消息,您需要指定另一条消息。

假设您想忽略NameError,那么您可以只使用continuepass

或者,您也可以引发异常。

示例如下:

代码语言:javascript
运行
复制
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

票数 1
EN

Stack Overflow用户

发布于 2021-01-22 17:06:59

作为@Joe Ferndz答案的替代方案,如果您不想引发异常,但仍然希望退出代码块,您可以在contextlib模块中使用suppress:

代码语言:javascript
运行
复制
from contextlib import suppress

with suppress(ValueError):
    print('hello world')
    raise ValueError
    print('this will not be printed')

在这种情况下,该块在raise ValueError时仍然退出,但不会引发异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65841806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档