在使用函数返回值之前,我想检查该值是否可用。所以我所拥有的或多或少是以下内容:
def get_module():
import foo
return foo
def do_something():
try:
module = get_module()
except:
print "error"
module.bar()
不幸的是,在我看来,这永远不会引发异常。特别是,我想检查(a)模块是否已正确传输以及(b)该模块是否是三个可能的模块之一。
我知道我可以通过 if 语句进行检查,但我觉得异常处理应该是正确的方法。
最佳答案
如果无法导入 foo
,下面的代码将生成 ImportError异常(exception):
def get_module():
import foo
return foo
def do_something():
try:
module = get_module()
except ImportError:
print "Import Error!"
raise
module.bar()
do_something()
产品:
Import Error!
Traceback (most recent call last):
...
import foo
ImportError: No module named foo
请注意,您应该通过 except
block 中的 raise
重新引发异常,或者进行 return
,这样您就不会由于未定义的 module
变量,在 module.bar()
行上出现错误。
希望有帮助。
关于Python异常处理: Check return value of function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22461500/