发生异常时如何重复代码?
How to repeat code when exception happens?
我想连接两台 PC,但是当其中一台 PC 未开机时,出现连接被拒绝的异常,因为另一台 PC 未开机,所以我认为当发生此异常时我只是重新执行这部分直到成功,所以当另一台PC开机时。
这是我的:
def main():
s = socket.socket()
host = "Alex-PC"
port = 8080
s.connect((host,port))
if traceback.format_exception(ConnectionRefusedError):
main()
我认为 if
语句可能有效,但我不知道如何为这个问题编写 if
语句。
调用函数时可以使用此方法:
temp = 1
def main():
s = socket.socket()
host = "Alex-PC"
port = 8080
s.connect((host,port))
temp = 0
while(1):
if temp == 1:
try:
main()
except:
temp = 1
elif temp == 0: break
当你想处理异常时(比如ConnectionRefusedError
),你应该使用Try/Except子句。
这将尝试执行 try
中的代码,如果失败,它将执行 except
子句(如果引发的 Exception
与声明的匹配except
)
编辑 根据评论的建议:
在您的具体情况下,您可以执行如下操作:
import threading
import socket
t = 1
def connect(s, host, port):
try:
s.connect((host,port))
except:
print(f"Host {host} is not available. Retrying in {t} seconds...")
time.sleep(t)
t*=2
connect(s, host, port)
def main():
s = socket.socket()
host = "Alex-PC"
port = 8080
connect(s, host, port)
我想连接两台 PC,但是当其中一台 PC 未开机时,出现连接被拒绝的异常,因为另一台 PC 未开机,所以我认为当发生此异常时我只是重新执行这部分直到成功,所以当另一台PC开机时。
这是我的:
def main():
s = socket.socket()
host = "Alex-PC"
port = 8080
s.connect((host,port))
if traceback.format_exception(ConnectionRefusedError):
main()
我认为 if
语句可能有效,但我不知道如何为这个问题编写 if
语句。
调用函数时可以使用此方法:
temp = 1
def main():
s = socket.socket()
host = "Alex-PC"
port = 8080
s.connect((host,port))
temp = 0
while(1):
if temp == 1:
try:
main()
except:
temp = 1
elif temp == 0: break
当你想处理异常时(比如ConnectionRefusedError
),你应该使用Try/Except子句。
这将尝试执行 try
中的代码,如果失败,它将执行 except
子句(如果引发的 Exception
与声明的匹配except
)
编辑 根据评论的建议:
在您的具体情况下,您可以执行如下操作:
import threading
import socket
t = 1
def connect(s, host, port):
try:
s.connect((host,port))
except:
print(f"Host {host} is not available. Retrying in {t} seconds...")
time.sleep(t)
t*=2
connect(s, host, port)
def main():
s = socket.socket()
host = "Alex-PC"
port = 8080
connect(s, host, port)