【发布时间】:2010-09-29 02:54:22
【问题描述】:
我最近在自学 Python,发现了 LBYL/EAFP 习语,用于在代码执行前进行错误检查。在 Python 中,似乎接受的样式是 EAFP,并且似乎与该语言很好地配合。
LBYL(Lok B在 You Leap 之前):
def safe_divide_1(x, y):
if y == 0:
print "Divide-by-0 attempt detected"
return None
else:
return x/y
EAFP(它E更容易A询问F宽恕比P授权):
def safe_divide_2(x, y):
try:
return x/y
except ZeroDivisionError:
print "Divide-by-0 attempt detected"
return None
我的问题是:我什至从未听说过使用 EAFP 作为主要数据验证结构,来自 Java 和 C++ 背景。 EAFP 在 Java 中使用是明智的吗?还是有太多的异常开销?我知道只有在实际抛出异常时才会产生开销,所以我不确定为什么不使用更简单的 EAFP 方法。只是偏好吗?
【问题讨论】:
标签: java python error-handling idioms