2017-02-09 64 views
2

我想知道是否有Python中的標準機制,這種使用情況:在Python中引發延遲異常?

try: 
    do_a() 
    if something_happens(): 
     raise DelayedException # is really only raised after do_b() 
    do_b() 
except DelayedException as de: 
    # handle de after the entire try/except block completed 

我明明只是存儲在變量中的異常信息後處理,但我不知道是否有這樣的機制內置到python(3.x如果有所作爲)。

編輯: 爲了闡明,在我的用例中,異常處理需要do_b()的結果。

+0

將要發生什麼,如果'do_b()'提出了自己的異常? –

+2

不要將'do_something()'包裝在try-finally塊中(在finally塊中用'do_b()')做到這一點? – dhke

+2

不是,不是一件事。這看起來不像例外情況的用例;只記錄錯誤並稍後檢查。 – user2357112

回答

1

是的,但它的醜陋:

try: 
    do_a() 
    try: 
     if do_something(): 
      raise DelayedException() 
    finally: 
     do_b() 
except DelayedException: 
    pass 
+0

確實有點醜陋!我花了一些時間來了解它是如何工作的,所以我猜這不是一個好兆頭,可能使用變量會使意圖更清晰。 –