MST

星途 面试题库

面试题:Python套接字地址解析中的异常处理

在进行Python套接字地址解析时,可能会遇到多种异常情况,如主机名无法解析、端口号无效等。请阐述你会如何在代码中优雅地捕获并处理这些异常,以确保程序的健壮性。并给出一个完整的代码示例,包含可能出现的异常及相应处理逻辑。
48.2万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

在Python中进行套接字地址解析时,可以使用try - except块来捕获并处理可能出现的异常。以下是一个示例:

import socket


def resolve_socket_address(host, port):
    try:
        # 尝试解析主机名和端口号
        addr_info = socket.getaddrinfo(host, port)
        for family, socktype, proto, canonname, sockaddr in addr_info:
            print(f"解析结果: {sockaddr}")
    except socket.gaierror as e:
        # 处理主机名无法解析等地址相关错误
        print(f"地址解析错误: {e}")
    except socket.error as e:
        # 处理其他套接字相关错误
        print(f"套接字错误: {e}")


if __name__ == "__main__":
    host = "nonexistent_host"
    port = 8080
    resolve_socket_address(host, port)

在上述代码中:

  1. 使用try - except块来捕获异常。
  2. socket.getaddrinfo函数用于解析主机名和端口号。
  3. socket.gaierror用于捕获与地址相关的错误,如主机名无法解析。
  4. socket.error用于捕获其他套接字相关的错误。