脚本引发HTTPError,但无法捕获

时间:2018-01-24 20:08:23

标签: python exception

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

  

HTTPError:HTTP错误404:未找到

     

在处理上述异常期间,发生了另一个异常:

     

NameError Traceback(最近一次调用   最后)in()        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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

在代码顶部添加

from urllib.error import HTTPError

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