发生异常时如何重复代码?

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)