私は最近 Python を独学していて、コード実行前のエラー チェックに関する LBYL/EAFP のイディオムを発見しました。Python では、受け入れられているスタイルは EAFP のようで、この言語でうまく機能するようです。
LBYL ( Look Before You Leap ) : _ _
def safe_divide_1(x, y):
if y == 0:
print "Divide-by-0 attempt detected"
return None
else:
return x/y
EAFP (許可よりも許しを求める方が簡単です):
def safe_divide_2(x, y):
try:
return x/y
except ZeroDivisionError:
print "Divide-by-0 attempt detected"
return None
私の質問は次のとおりです。私は、Java および C++ のバックグラウンドから来て、主要なデータ検証構造として EAFP を使用することさえ聞いたことがありませんでした。EAFP は Java で使用するのに賢明なものですか? または、例外によるオーバーヘッドが多すぎますか? 例外が実際にスローされたときのオーバーヘッドしかないことはわかっているので、EAFP のより単純な方法が使用されない理由がわかりません。好みだけですか?