【发布时间】:2012-09-25 07:14:12
【问题描述】:
我有一个方法可以检查一些东西并且可以
- 自身引发异常
- 返回真
- 返回错误
我想正确地捕获异常以自己提出一个异常,但如果测试返回 False。这样做的错误方法是
try:
if not check():
raise MyException()
except:
raise MyException()
因为第一个MyException 在except 之后再次被捕获。正确处理此问题的一种方法是
try:
flag = check()
except:
raise MyException()
else:
if not flag:
raise MyException()
这是处理这种情况的唯一方法,还是有另一种更有效的方法来处理它,摆脱 flag 变量?
【问题讨论】:
-
首先:不要使用毯子
except:捕捉,总是只捕捉特定异常。 -
@avasal:是什么让你认为 OP 不知道
raise? -
您应该添加在 check() 中引发的异常,因为从答案中可以看出:有几种方法可以做到这一点。
-
是的,通常情况下的特定异常除外。但是当您在服务器上运行某些东西时,您不希望服务器因错误而停止,您希望将任何错误传播给客户端。
标签: python exception-handling try-catch