Python中“OSError: [Errno 98] Address already in use”异常相关问题咨询
关于Python TCP Socket中「OSError: [Errno 98] Address already in use」的异常说明
异常类型归属
这个错误属于OSError的实例,本质是系统级套接字错误,对应的错误码Errno 98在Python的errno模块中定义为errno.EADDRINUSE,代表「地址已被占用」。
捕获该特定异常的写法
你可以直接捕获OSError,再通过错误码判断是否为目标异常,示例代码如下:
import socket import errno try: # 创建并绑定TCP套接字 server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_sock.bind(("127.0.0.1", 8000)) server_sock.listen(5) except OSError as e: if e.errno == errno.EADDRINUSE: print("指定地址已被占用,请更换端口或释放占用该端口的进程") else: # 若为其他OSError,重新抛出不处理 raise
如果不需要区分其他OSError,仅想捕获所有系统级套接字错误,直接写except OSError:即可,但这种方式会捕获所有类型的系统错误,建议结合错误码做精准判断。
内容的提问来源于stack exchange,提问作者MattieG4
相关产品推荐
相关产品推荐

