gpt4 book ai didi

python - IMDbPy : How can I catch IMDbDataAccessError?

转载 作者:太空宇宙 更新时间:2023-11-03 23:55:01 25 4
gpt4 key购买 nike

我完全不擅长处理异常,而且我一直在学习使用 IMDbPy。如果用户输入无效 ID,我想捕获异常。我试过了

import imdb
from imdb import IMDbDataAccessError
ia = imdb.IMDb(accessSystem='http')
try:
movie = ia.get_movie('12121212212121')
except IMDbDataAccessError:
print("error")

但它不会打印文本“error”,而是显示错误消息。这是 -

IMDbDataAccessError exception raised; args: ({'errcode': None,
'errmsg': 'None', 'url':
'https://www.imdb.com/title/tt12121212212121/reference', 'proxy': '',
'exception type': 'IOError', 'original exception': <HTTPError 404:
'Not Found'>},); kwds: {}

最佳答案

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_unicodeupdate。搜索 "ret = method(mopID)" 我找到了 this只有在 IMDB Base 对象中将 self._reraise_exceptions 设置为 true 时才会再次引发异常。

我创建了一个 issue要求他们更清楚地表明此设置是必要的。创建者回复:

I think it would be better to just always raise the exception.
I'll consider the change for a future release.


另外值得注意的是他们的 config 的摘录:

## Set the threshold for logging messages.
# Can be one of "debug", "info", "warning", "error", "critical" (default:
# "warning").
#loggingLevel = debug

这意味着您可以减少日志的冗长程度。但是,传递 loggingLevel="critical" 参数似乎不会减少控制台输出。那是因为这些错误本身就是 critical 级别的。
但是,您可以 disable the logger completely :

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")

记录器的名称是 currently 'imdbpy''imdbpy.aux'


2021 年 5 月更新

github issue 上有一些事件:

Just committed a change to the default behavior: now if not specified reraiseExceptions is True.

This means that any exception is re-raised.

If this breaks something important let us know, but I think this should be better handled catching the exception in the caller code.

关于python - IMDbPy : How can I catch IMDbDataAccessError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58124534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com