2017-07-26 204 views
-1

我瞭解try/except方法。我正在試圖做的是:python忽略任何導致錯誤的行並繼續運行該行後的代碼

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語句的任何地方,所以我不能只包裝do_something_else()本身的try/except,有沒有辦法在python中做到這一點?

+1

只在你的'try中包含'do_something_else':...除了:'block –

+1

你捕獲所有異常,然後通過。 Python只是在做你所說的。 (如果需要更多幫助,請使用追溯完整示例)。 – thebjorn

+0

或之後。 'try:<可以拋出的代碼>除了: do_other_stuff()' – Baldrickk

回答

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 /只是太:

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:當試圖打開文件時)