2017-08-27 65 views
-5

这是我的Python3程序。Python3错误处理

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

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

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

谢谢。

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

+0

您的代码格式已完全中断。请[编辑]并修复它。 –

+0

为什么递归? – srattigan

+0

当程序发现错误时,我想保持它运行。 –

回答

1

封装在try /除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 true 
    try 
    ------- 
    except 
    --------