【问题标题】:Python3 error handlingPython3 错误处理
【发布时间】:2017-08-27 23:57:38
【问题描述】:

这是我的 Python3 程序。

try:
    while true:
        A
except NewConnectionError:
    print('error detection')

我认为当上面的程序捕获 NewConnectionError 时,它会在打印日志后返回“A”。但事实并非如此。

当程序捕获错误时,如何更改上述代码以递归地重新启动“A”。

谢谢。

附: 不仅重新启动,而且保持运行对我也有好处。 感谢您快速回复。

【问题讨论】:

  • 您的代码格式已完全损坏。请edit 修复它。
  • 为什么要递归?
  • 当程序发现错误时,我想让它继续运行。

标签: python python-3.x


【解决方案1】:

将 try/except 块封装在 while 循环内(而不是相反):

while True:
    try:
        A()
    except NewConnectionError as err:
        # This will also print the reason the exception occurred
        print ('Detected error: {}'.format(err))
    else:
        print("A() returned successfully.")
    finally:
        print ("Next loop iteration...")

您可以放心地省略 elsefinally 块。我只是出于说明目的而将它们包括在内。

else 仅在没有发生异常的情况下才会执行(也就是说,如果 try 块中的语句成功)。

finally无论是否发生异常都会被执行。

【讨论】:

    【解决方案2】:

    您需要将 while 放在 try 方法之上,这样您的代码就会是这样的:

    while true
       try
       -------
       except
       --------
    

    【讨论】:

      猜你喜欢
      • 2020-09-30
      • 2019-01-18
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 2016-08-18
      相关资源
      最近更新 更多