2016-10-20 71 views
2

我在python 3.4中使用了一个名为dbfread的模块,它引发了一个异常 - “DbfError”。我怎样才能抓住它?Python捕获自定义异常

我找不到这个错误定义的位置,因此无法导入它。

+0

虽然你知道包名。它是什么包?你看过它的帮助还是做了一个'dir'来查看是否有定义的异常?然后你可以看看'packagename .__ path__'或'packagename .__ file__'中的目录并搜索源代码。 – tdelaney

+0

刚刚发现它,它从dbf.ver_33中导入DbfError。文档没有定义错误。 – tadalendas

+1

从pypi看来,它看起来也是'dbf.DbfError'。如果实现模块更改,此位置可能是更好的选择。 'ver_33'让我怀疑未来是否有'ver_34'。 – tdelaney

回答

1

检查dbf module source,它对不同版本的python有不同的子模块,在这些子模块中定义了DbfError。它有条件地使用for循环从特定于版本的模块导入DbfError。这似乎是一种奇特的做事方式,它似乎让你的IDE感到困惑。

但是您应该使用dbf.DbfError,以便您的代码在多个python版本上工作。