Просто создайте al oop, который ломается, если не возникает исключение
while True:
try:
some_code_that_might_fail
except Exception: # catch all potential errors
continue # if exception occured continue the loop
break # if no exception occured break out of the loop
Пожалуйста, попробуйте следующий пример:
while True:
try:
num = int(input("please enter a number"))
print("The number is ", num)
rec = 1 / num
except Exception:
print("either you entered no number or 0 (or some other error occured)")
continue # if any exception occured continue the loop
break # if no exception occured break out of the loop
print("1 / %f = %f" % (num, rec))
Как упоминал Бруно. В целом (и это то, что я делаю в своем собственном коде), не рекомендуется перехватывать все исключения.
Вы должны явно отлавливать только известные исключения
Приложение 2020-04- 17
Читая ваш ответ, я думаю, что ваш вопрос немного вводит в заблуждение. Возможно, ваша проблема в том, что у вас есть функция, которую вы хотели бы выполнять вечно. Однако иногда функция завершается (из-за ошибки) без , вызывающего исключение.
Если это так, тогда просто напишите:
while True:
afunc()
print("function terminated. I will restart it")
, но обратите внимание, что ваша программа никогда не завершится.
или если функция иногда вызывает исключение, а иногда нет, а просто прекращает работу, и вы хотите вызывать функцию всякий раз, когда она завершается с ошибкой или завершается, тогда выполните.
while True:
try:
afunc()
print("function terminated without exception")
except Exception:
pass
print("function encountered an exception")
print("will restart")
Если вы хотите, чтобы эта функция могла завершиться, и у вас есть возможность выяснить, была ли это ошибка или нет, вы можете сделать что-то вроде:
while True:
try:
afunc()
if i_know_that_func_terminated_correctly():
print("function terminated correctly")
break
print("function terminated without an error")
except Exception:
pass
print("function terminated with an exception")
print("restarting")
Я добавил операторы печати для отладка / визуализация. Просто удалите их или прокомментируйте их, если не нужно. (Вот почему я оставил оператор pass
в предложении except
)