如果出现任何错误,是否可以 运行 在循环中尝试语句?

Is it possible to run try statement in a loop if any error comes?

如果出现错误,它会转到 try 语句之后的 except 语句,程序在此结束。我的问题是,是否有可能,如果出现错误,那么它会在不结束程序的情况下连续运行 try 语句?

例如:

try:
    some error caught
except:
    go to try statement again

并且这个在链中连续运行?

只要创建一个循环,如果没有异常发生就中断

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))

如 B运行o 所述。 通常(这就是我在自己的代码中所做的)不建议捕获所有异常。

您应该只显式捕获已知异常

附录 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 子句中)