gpt4 book ai didi

Python 线程未处理的异常

转载 作者:太空狗 更新时间:2023-10-29 21:57:19 25 4
gpt4 key购买 nike

问题

  1. 异常的原因是什么?

  2. 做了 client导致任何错误?

  3. 如果可能,请解释其他错误。

背景

我正在创建一个 Python GUI 套接字服务器。当客户端连接到我的服务器时,GUI 窗口将打开(我仍在努力)。但是,当客户端确实连接时,我收到一个错误:

Unhandled exception in thread started by <function clientthread at 0x10246c230>

由于实际脚本相当长,我有provided a pastebin link.

这是线程代码。 s 是我的 socket 对象的名称。

def clientthread(s):

#Sending message to connected client
#This only takes strings (words
s.send("Welcome to the server. Type something and hit enter\n")

#loop so that function does not terminate and the thread does not end
while True:

#Receiving from client
data = s.recv(1024)
if not data:
break
s.sendall(data)
print data
s.close()

回溯

感谢建议Morten .这是回溯。

Socket Created
Socket Bind Complete
Socket now listening
Connected
Traceback (most recent call last):
File "/Users/BigKids/Desktop/Coding/Python 2/Sockets/Function/Server GUI Alpha Function.py", line 80, in clientthread
s.send("Welcome to the server. Type something and hit enter\n")
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 170, in _dummy
raise error(EBADF, 'Bad file descriptor')
error: [Errno 9] Bad file descriptor

就我个人而言,我认为很多错误都是由 GUI 引起的。

谢谢!

最佳答案

首先,您可以捕获异常,打印它并查看它是什么:)

这样做,例如用 try/except 子句包围它并打印任何发生的异常。

def clientthread(s):
try:
#Sending message to connected client
#This only takes strings (words
s.send("Welcome to the server. Type something and hit enter\n")

#loop so that function does not terminate and the thread does not end
while True:

#Receiving from client
data = s.recv(1024)
if not data:
break
s.sendall(data)
print data
s.close()
except Exception:
import traceback
print traceback.format_exc()

我猜这是因为客户端断开连接。这将导致异常,您应该适本地处理它。如果客户端可以通过多种方式断开连接。通过告诉您,超时,在您尝试发送某些内容时断开连接等。所有这些场景都是似是而非的异常情况,您应该对其进行测试和处理。希望这会帮助您继续前进,如果没有,请发表评论:)

关于Python 线程未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15723825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com