在使用函数返回值之前,我想检查该值是否可用。所以我所拥有的或多或少是以下几点:
def get_module():
import foo
return foo
def do_something():
try:
module = get_module()
except:
print "error"
module.bar()
不幸的是,在我看来,这永远不会引发异常。特别是,我想检查(a)模块是否正确传输,以及(b)模块是三个可能的模块之一。
我知道我可以检查if语句,但我觉得异常处理应该是正确的方法。
答案 0 :(得分:1)
如果无法导入foo
,则以下代码会产生ImportError例外:
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
请注意,您应该通过raise
块中的except
重新加注例外,或者制作一个return
,这样就不会在{{1}上收到错误}因为未定义的module.bar()
变量而行。
希望有所帮助。