我理解try / except方法。我想做的是:
try:
some_func1() #potentially raises error too
do_something_else() #error was raised
continue_doing_something_else() #continues here after handling error
except:
pass
在上面的代码中,当在do_something_else()处引发错误时,将处理错误,然后退出try语句。
我想要的是让python继续导致错误的行之后的任何代码。假设在try语句中的任何地方都可能发生错误,所以我不能将try / except包装在do_something_else()本身周围,有没有办法在python中执行此操作?
答案 0 :(得分:0)
在except之后的可能异常之后放置您想要执行的代码。您可能希望使用finally
(有关文档,请参阅https://docs.python.org/3/tutorial/errors.html):
try:
some_func1()
do_something_else() #error was raised
except:
handle_exception()
finally:
continue_doing_something_else() #continues here after handling error or if no error occurs
如果continue_doing_something_else()
也可以抛出异常,那么将其放在try / except中:
try:
some_func1()
do_something_else() #error was raised
except:
handle_exception1()
try:
continue_doing_something_else()
except:
handle_exception2()
finally:
any_cleanup()
作为一般规则,您的异常处理应尽可能保持在尽可能小的范围内,同时保持合理,除了预期的'异常,而不是所有异常(例如,except OSError:
在尝试打开文件时)
答案 1 :(得分:0)
在Python中无法实现您想要做的事情(尝试重启)。 Lisp可以做到(http://www.gigamonkeys.com/book/beyond-exception-handling-conditions-and-restarts.html),你可以使用call/cc
在Scheme中实现它。