异常后如何 return 到我的循环?

How can I return to my loop after an exception?

我有以下代码:

import urllib.request
import json

flag_servidor = 0
flag_salva_txt = 0
numero = 0

#codigo para verificar se há conexao como servidor e caso nao
#haja ele criar um arquivo txt com as infos

while 1:
    try:
        url = urllib.request.urlopen('http://IP/CAMINHO/get_infos.php')
        x_ = url.read()
        y_ = json.loads(x_.decode('utf-8'))
        get_turno_ = y_["turno"]
        print(get_turno_)

        #salva as infos do txt dentro do banco de dados
        if flag_salva_txt == 1: #significa que temos infos para serem salvas
            arquivo = open('novo-arquivo1.txt', 'r')
            for linha in arquivo:
                linha = linha.rstrip()
                valor = linha.split(";")
                print(valor[0])
            flag_salva_txt = 0
        continue
    except Exception as e:
        print("Servidor indisponível.Erro:", e)
        if flag_salva_txt == 0:
            #após salvar txt 
            flag_salva_txt = 1
            numero = numero +1
            arquivo = open('novo-arquivo'+str(numero)+'.txt', 'w')
            arquivo.write('nova linha;123;1pop' + '\n')
            arquivo.close()
        continue

问题是:当第一次发生异常时,它向我显示消息错误,但是当它第二次发生时,我的代码停止 运行 并且没有显示任何内容。

我还是不太清楚crystal你的程序应该做什么,但也许这样的事情会有所帮助。

我将您的程序重构为一个单独的函数来获取数据,并在主循环中将其打印出来(或您喜欢做的任何事情)。

此外,为了不让您的脚本尽可能快地访问服务器,每个请求之间都有 5 秒的延迟,无论成功与否。

import datetime
import time
import urllib.request
import json


def get_turno():
    url = urllib.request.urlopen("http://IP/CAMINHO/get_infos.php")
    data = json.loads(url.read().decode("utf-8"))
    return data["turno"]


while True:
    try:
        turno = get_turno()
    except Exception as exc:
        print("Retrieving turno data failed: {}".format(exc))
    else:
        current_time = datetime.datetime.now().isoformat()
        print("Time: {} - Turno: {}".format(current_time, turno))
    time.sleep(5)