脚本引发 HTTPError,但无法捕获

问题描述 投票:0回答:3

我有一个错误,我有点难以理解。我有一个使用biopython 来查询数据库的脚本。有时,biopython 无法找到我们要查找的内容,并且会抛出 HTTPError。但是,我无法捕获 HTTPError,因为我收到以下错误消息:

HTTPError:HTTP 错误 404:未找到

在处理上述异常的过程中,又发生了一个异常:

NameError Traceback(最近调用 最后)在() 51 UniProt = 文本[索引+9:索引+15] 52 uniprot_ID[bigg_ID] = UniProt ---> 53 除了 HTTPError: 54 如果 err.code == '404': 55 uniprot_ID[biGG_ID] = 无

NameError:名称“HTTPError”未定义

首先如何抛出未定义的错误?我缺少什么?

这是相关代码:

from Bio.KEGG import REST, Enzyme
from DataTreatment import openJson, write

...

try:
    ec_number = some_string
    text = REST.kegg_get('ec:'+ec_number).read()

...

except HTTPError:
    if err.code == '404':
        a_dict[a_key] = None
python exception
3个回答
4
投票

您需要导入 HTTPError 类。如果您已经导入,请确保您获得了正确的导入。您可以尝试捕获通用异常并使用 type(ex) 找出它是什么并导入正确的类型。


3
投票

您需要导入 HTTPError 类,试试这个;

在代码顶部添加

from urllib.error import HTTPError

来源:Entrez._HTTPError 与 Entrez.HTTPError(通过 Entrez.efetch)


0
投票

HttpError
也是
googleapiclient.errors

的一部分

识别错误源的一种做法是捕获异常的类型。可以使用以下代码

try:
    # < main code here >
except Exception as e:
    print(type(e))

其输出看起来像这样

<class 'googleapiclient.errors.HttpError'>

因此,您需要进行相应的调整。例如。

from googleapiclient.errors import HttpError
try:
    # < main code here >
except HttpError as error:
    pass
© www.soinside.com 2019 - 2024. All rights reserved.