首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中的LBYL vs EAFP?

Java中的LBYL vs EAFP?
EN

Stack Overflow用户
提问于 2009-01-01 09:50:56
回答 5查看 23.2K关注 0票数 73

我最近在自学Python,发现了关于代码执行前的错误检查的LBYL/EAFP习惯用法。在Python中,被接受的样式似乎是EAFP,而且它似乎与该语言配合得很好。

LBYL (L__ook B__efore Y__ou L__eap):

代码语言:javascript
复制
def safe_divide_1(x, y):
    if y == 0:
        print "Divide-by-0 attempt detected"
        return None
    else:
        return x/y

EAFP (it's E__asier to A__sk P__ermission):than EAFP)(it‘sE__asier toA__skP__ermission):

代码语言:javascript
复制
def safe_divide_2(x, y):
    try:
        return x/y
    except ZeroDivisionError:  
        print "Divide-by-0 attempt detected"
        return None

我的问题是:我从来没有听说过使用EAFP作为主要的数据验证构造,来自Java和C++背景。在Java中使用EAFP是明智的吗?或者异常带来的开销太大了?我知道只有在真正抛出异常时才会产生开销,所以我不确定为什么不使用更简单的EAFP方法。这仅仅是偏好吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/404795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档