2011-08-31 64 views
3

的特定錯誤我有一定的功能,其確實在某些情況下執行以下操作:嘗試/除了類型異常

引發異常,「someError」

,並且可以提高在其它情況下的其它異常。

我想以不同的方式處理函數引發異常,'someError'以及函數引發其他異常的情況。

例如,我嘗試了以下方法,但未按預期工作。

try: 
    raise Exception, 'someError' 
except Exception('someError'): 
    print('first case') 
except: 
    print ('second case') 

這版畫「第二案」 ......

+5

真正的解決辦法是,當然,改變這種功能,以提高不同的,更適當的例外。 – delnan

回答

10

你可以看一下異常

>>> try: 
...  raise Exception, 'someError' 
... except Exception as e: 
...  if e.message == 'someError': 
...    print 'first case' 
...  else: 
...    print 'second case' 
... 
first case 

的消息屬性,但它是相當哈克。最好是創建兩個單獨的例外並單獨捕獲每個例外。

+1

謝謝,我同意最好有具體的例外類,但我寧願不這樣做,因爲這個功能是'第三方' – jerome

+0

+1回答並提及最佳實踐 – CoatedMoose

+0

這不爲我工作。我不得不這樣做 如果str(E)==「someError」 因爲我發現e.message不包含我在 – lefterav

0

通過強行打印出我能找到的特定例外的屬性,至少對於錯誤號所在的WindowsError

import os 
try: 
    os.mkdir('name') # folder already created, will error 
except WindowsError as e: 
    if e.winerror == 183: 
     print 'This is the "Cannot create a file when that file already exists" error' 
    else: 
     print "This is an error I don't know about' 
     raise 

我猜其他異常具有相似的屬性