【问题标题】:Script raises HTTPError, but cannot catch脚本引发 HTTPError,但无法捕获
【发布时间】:2018-01-24 20:08:22
【问题描述】:

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

HTTPError:HTTP 错误 404:未找到

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

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你需要导入HTTPError-class,试试这个;

      在代码的顶部,添加

      from urllib.error import HTTPError
      

      来源:Entrez._HTTPError vs. Entrez.HTTPError (via Entrez.efetch)

      【讨论】:

        猜你喜欢
        • 2019-05-17
        • 1970-01-01
        • 2020-12-16
        • 1970-01-01
        • 2021-09-02
        • 2013-02-26
        • 2013-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多