我創建了一堆函數,我需要非常相似,除了在所有這些子句中,但我討厭有這麼多行的嘗試和除了子句和每個函數內部相同的代碼。例如:重複嘗試和除了子句
import sys
import random
def foo():
num=random.random()
try:
if num>0.5: print 'OK'
elif num>0.25: raise NameError('Too Small')
else: raise KeyboardInterrupt
except NameError:
print "%s had a NameError" % sys._getframe().f_code.co_name
except:
print "%s had a different Error" % sys._getframe().f_code.co_name
def bar():
num=random.random()
try:
if num>0.8: print 'OK'
elif num>0.6: raise NameError('Too Small')
else: raise KeyboardInterrupt
except NameError:
print "%s had a NameError" % sys._getframe().f_code.co_name
except:
print "%s had a different Error" % sys._getframe().f_code.co_name
該代碼後「嘗試」是功能不同,但之後的碼「除」是相同的。我想合併那些除了語句,所以他們不會讓我的代碼看起來如此擁擠。有沒有一個好的方法來做到這一點?
捕捉任何異常通常是一個非常糟糕的主意。它掩蓋真正的問題並使調試更加困難。捕捉你所知道的任何異常 - 如果你不瞭解它們,你真的想捕捉它們嗎? – 2012-02-21 23:57:17
這是一個很好的觀點。如果該功能失敗,我確實需要腳本繼續前進。最後一個「except」包含'print sys.exc_info()[:2]',其中包含異常的名稱。有一個更好的方法嗎? – crunkchitis 2012-02-22 14:10:27