Python异常处理: Check return value of function

标签 python exception

在使用函数返回值之前,我想检查该值是否可用。所以我所拥有的或多或少是以下内容:

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/

相关文章:

python - .py{} 扩展名是什么?

java - try catch 异常(int 中的字母)

ruby-on-rails - AssociationType 与嵌套模型表单上的预期类型不匹配

java - 为什么 UnknownHostException 没有被 Exception (java) 捕获?

python - SQL根据记录是否存在外键指向它来选择查询记录

python - 在 Python 中删除 CSV 的前四行?

python - 如何在 scikit-learn CountVectorizer 中计算术语频率

http - 我们可以将用户添加到 'master' 以外的领域中的 key 斗篷吗?

flutter - 如何在flutter中使用CachedNetworkImage处理404异常

python - asyncio - 如何在信号处理程序中使用协程?