欢迎访问宙启技术站
智能推送

简明Python中HTTPError()异常处理指南

发布时间:2023-12-14 17:24:45

在Python中,urllib库提供了处理HTTP请求和响应的功能。在这个库中,HTTPError是一个重要的异常类,当HTTP请求返回错误状态码时会引发HTTPError异常。

HTTPError异常有以下几个常用的属性:

- code:HTTP状态码;

- reason:HTTP状态码对应的原因短语;

- headers:HTTP响应的头部信息。

下面是HTTPError异常处理的指南和使用例子。

## 捕获HTTPError异常

在编写Web爬虫或进行API调用时,我们经常会遇到HTTP请求返回错误的情况。为了处理这些异常,我们可以使用try-except语句来捕获HTTPError异常。

import urllib.request
from urllib.error import HTTPError

url = "https://www.example.com/404page"
try:
    response = urllib.request.urlopen(url)
except HTTPError as e:
    print("HTTPError: ", e.code, e.reason)

在上面的代码中,我们尝试打开一个不存在的页面,这会返回一个404错误。当遇到HTTPError异常时,我们会打印出异常的状态码和原因短语。

## 处理不同类型的HTTPError异常

除了常见的404错误,HTTPError还可以引发其他类型的异常,例如500服务器内部错误、403禁止访问等。我们可以根据不同的异常类型来采取不同的处理措施。

import urllib.request
from urllib.error import HTTPError

url = "https://www.example.com/500error"
try:
    response = urllib.request.urlopen(url)
except HTTPError as e:
    if e.code == 404:
        print("Page not found.")
    elif e.code == 500:
        print("Internal server error.")
    elif e.code == 403:
        print("Access denied.")
    else:
        print("HTTPError: ", e.code, e.reason)

在上面的代码中,我们根据不同的HTTP状态码来进行不同的处理。如果是404错误,我们打印"Page not found.";如果是500错误,我们打印"Internal server error.";如果是403错误,我们打印"Access denied.";否则打印异常的状态码和原因短语。

## 获取HTTP响应头部信息

除了处理异常之外,HTTPError还包含了HTTP响应的头部信息。我们可以使用headers属性来获取这些信息。

import urllib.request
from urllib.error import HTTPError

url = "https://www.example.com/404page"
try:
    response = urllib.request.urlopen(url)
except HTTPError as e:
    print("HTTPError: ", e.code, e.reason)
    headers = e.headers
    print(headers)

在上面的代码中,我们首先打印异常的状态码和原因短语。然后,我们使用headers属性获取HTTP响应的头部信息,并打印出来。

## 总结

HTTPError是一个常见的异常类,在处理HTTP请求和响应时经常会遇到。通过捕获HTTPError异常,我们可以处理不同类型的HTTP错误,还可以获取HTTP响应的头部信息。希望本文提供的HTTPError异常处理指南和使用例子能够帮助你更好地处理HTTP请求和响应的异常情况。