2017-01-24 42 views
1

我是不是很愚蠢的做這樣的事情?我覺得我可能不會從根本上理解try catch塊的目的。多次嘗試在循環中的catch塊

我有一個腳本,我想在自動駕駛上運行一個守護進程,有時會發生什麼,它會檢查列表中的某些資源是否完全分配。如果資源完全分配,它不能繼續一件事,但還有其他的東西可以做。因爲我也是從API調用某些東西,API有時會拋出Exception非常普遍(就像API_Exception)。在這種情況下正在做多個try塊嗎?

的主要問題是,break不允許我出去循環

for: 
    try: 
     stuff() 
    except ExceptionA: 
     handle() 
     break 
    except ExceptionB: 
     report() 
     sys.exit() 
    try: 
     other_stuff() 
    except ExceptionA: 
     handle_in_a_different_way() 
     break 
    except ExceptionC: 
     report() 
     sys.exit() 

other_code_that_should_execute_if_there_is_a_break() 

。在這種情況下,我應該只是結合這兩個塊,趕上ExceptionA一次? ExceptionA可能不容易解析參數。

for: 
    try: 
     stuff() 
     other_stuff() 
    except ExceptionA: 
     if ExceptionA has param 
      handle() 
     elif ExceptionA has other param 
      handle_in_a_different_way() 
    except ExceptionB: 
     report() 
     sys.exit() 
    except ExceptionC: 
     report() 
     sys.exit() 
+0

你可以在except(ExceptionB,ExceptionC):'後面的情況下分組。 –

回答

0

我對異常沒什麼經驗,但是我在棧中發現了一些可能有用的東西。

Catch multiple exceptions in one line (except block)

這也取決於您當前正在使用的版本,在Python 2似乎可以用逗號例外分開,但是在Python 3人建議使用「as'to擺列一個變量,那麼你可以驗證如何對待他們