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

Python链接校验函数异常求助:错误链接未返回预期False

问题排查与修正

代码核心问题

  • 异常捕获范围缺失:requests库抛出的异常并非urllib.error.HTTPError,当域名不存在(如示例中的stackoverflowFALSE.com)时,会触发requests.exceptions.ConnectionError,原代码未捕获这类异常,导致错误链接无法返回False。
  • 条件判断逻辑错误:if y == 200 or 403: 是无效逻辑——y是requests.Response对象,不可能等于整数200;且单独的403会被视为布尔值True,导致只要请求没触发捕获的异常,就会返回True,完全不符合需求。

修正后的代码

import requests
from requests.exceptions import RequestException

def form_url(urlcheck):
    try:
        response = requests.get(urlcheck)
        # 仅当状态码为200或403时返回True
        return response.status_code in (200, 403)
    except RequestException:
        # 捕获所有请求相关异常,覆盖域名不存在、连接失败等场景
        return False

print(form_url("https://stackoverflow.com/"))  # 输出True
print(form_url("https://stackoverflowFALSE.com/"))  # 输出False

修正说明

  1. 优化异常捕获:使用requests.exceptions.RequestException捕获所有请求类异常,覆盖域名解析失败、连接超时、HTTP错误等所有无效请求场景。
  2. 修复状态码判断:直接校验响应的status_code是否在目标集合内,逻辑清晰且准确。
  3. 简化返回逻辑:无需多分支判断,直接返回布尔值,代码更简洁高效。

内容的提问来源于stack exchange,提问作者Everyone make mistakes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:55:18