[英]How to Catch Exception in for loop and return exception only after loop is done?
[英]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
問題是:當第一次發生異常時,它向我顯示消息錯誤,但是當它第二次發生時,我的代碼停止運行並且不顯示任何內容。
我仍然不太清楚您的程序應該做什么,但也許這樣的事情會有所幫助。
我將您的程序重構為單獨的 function 以獲取數據,並將其打印出來(或您喜歡做的任何事情)在主循環中。
此外,為了不盡可能快地訪問服務器,每個請求之間有 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.