私はたくさんの関数を作成しましたが、それらの中には非常によく似た句が必要ですが、tryやexcept句や関数内に同じコードがたくさんあるのは嫌です。例:繰り返しの試行句と除外句
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
"try"の後のコードは機能が異なりますが、 "except"の後のコードは同じです。私はこれらの例外文を統合して、コードの見た目を窮屈にしないようにしたいと思います。これを行う良い方法はありますか?
例外をキャッチすることは、通常、本当に悪い考えです。実際の問題を隠し、デバッグを難しくします。あなたが知っているすべての例外をキャッチします。あなたがそれらについて知らないのであれば、本当にそれらをキャッチしたいですか? –
それは良い点です。関数が失敗した場合は、移動するスクリプトが必要です。最後の "except"には、例外の名前を含む 'print sys.exc_info()[:2]'が含まれます。これを行うより良い方法はありますか? – crunkchitis