import imdb
from imdb import IMDbDataAccessError
try:
ia = imdb.IMDb(accessSystem='http', reraiseExceptions=True)
movie = ia.get_movie('12121212212121')
except:
print("error")
reraiseExceptions的选项会有所帮助。现在程序输出跟踪和之后error
。请注意,自 2021 年 5 月以来reraiseExceptions=True
应该已经是默认设置。
我通过查看引发异常的函数的来源发现了这一点。即retrieve_unicode
和update
。搜索"ret = method(mopID)"
我发现只有self._reraise_exceptions
在 IMDB Base 对象中设置为 true 时才会再次引发异常。
我创建了一个问题,要求他们更清楚地表明此设置是必要的。创作者回复:
我认为总是提出例外会更好。
我会考虑对未来版本的更改。
另外值得注意的是他们的配置摘录:
## Set the threshold for logging messages.
# Can be one of "debug", "info", "warning", "error", "critical" (default:
# "warning").
#loggingLevel = debug
这意味着您可以减少日志的详细程度。但是,传递loggingLevel="critical"
参数似乎并没有减少控制台输出。那是因为这些错误本身就是水平的critical
。
但是,您可以完全禁用记录器:
import imdb
from imdb import IMDbDataAccessError
import logging
try:
logger = logging.getLogger('imdbpy');
logger.disabled = True
ia = imdb.IMDb(accessSystem='http', reraiseExceptions=True, loggingLevel="critical")
movie = ia.get_movie('12121212212121')
except IMDbDataAccessError:
print("error")
记录器的名称当前 'imdbpy'
是和'imdbpy.aux'
。
2021 年 5 月更新
github问题上有一些活动:
刚刚提交了对默认行为的更改:现在如果未指定 reraiseExceptions 为 True。
这意味着重新引发任何异常。
如果这破坏了一些重要的事情,请告诉我们,但我认为应该更好地处理在调用者代码中捕获异常。