You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何捕获urllib的404错误避免脚本崩溃并返回指定内容?

解决urllib请求404导致脚本崩溃的问题

这个问题很常见,咱们可以通过异常捕获机制来让脚本优雅处理404错误,而不是直接崩溃。核心思路就是捕捉请求过程中抛出的HTTP异常,然后返回你想要的404相关内容。

修改后的函数示例

首先要导入urllib.error模块(用来捕获HTTP相关异常),然后用try-except块包裹请求逻辑:

import urllib.request
import json
import urllib.error  # 新增:导入异常处理模块

def pull_sector(sym):
    company_data_link = "url%s%s" % (sym, API_KEY_COMPANY)
    try:
        # 把可能出错的请求逻辑放到try块里
        with urllib.request.urlopen(company_data_link) as url:
            company_data = json.loads(url.read().decode())
            return company_data
    except urllib.error.HTTPError as e:
        # 捕获HTTP状态码错误(比如404、500)
        if e.code == 404:
            # 返回你想要的404相关内容,这里用字典示例
            return {"error_code": 404, "error_msg": "请求的公司数据不存在(404)"}
        else:
            # 其他HTTP错误也可以返回对应信息,避免崩溃
            return {"error_code": e.code, "error_msg": f"HTTP错误: {e.reason}"}
    except urllib.error.URLError as e:
        # 捕获网络连接类错误(比如域名无效、无网络)
        return {"error_code": "NETWORK_ERROR", "error_msg": str(e.reason)}

关键说明

  • urllib.request.urlopen在遇到404时会抛出HTTPError异常,我们通过except块捕获它,判断状态码后返回自定义的错误内容。
  • 额外捕获URLError是为了处理网络层面的错误(比如断网、域名解析失败),进一步提升脚本的健壮性。
  • 返回的错误格式可以根据你的需求调整,比如返回字符串"404 Not Found"或者其他结构,只要调用这个函数的地方能识别就行。

这样修改后,你的脚本就不会因为偶尔的404崩溃,而是会返回清晰的错误提示,方便后续逻辑处理。

内容的提问来源于stack exchange,提问作者blonc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:35:19