相关疑难解决方法(0)

LBYL与Java中的EAFP?

我最近在教自己Python并在代码执行之前发现了关于错误检查的LBYL/EAFP习语.在Python中,似乎接受的样式是EAFP,它似乎与该语言一起使用.

LBYL(大号 OOK 安伏ý OU 大号 EAP):

def safe_divide_1(x, y):
    if y == 0:
        print "Divide-by-0 attempt detected"
        return None
    else:
        return x/y
Run Code Online (Sandbox Code Playgroud)

EAFP(它的ê asier到一个 SK ˚F orgiveness比P ermission):

def safe_divide_2(x, y):
    try:
        return x/y
    except ZeroDivisionError:  
        print "Divide-by-0 attempt detected"
        return None
Run Code Online (Sandbox Code Playgroud)

我的问题是:我从来没有听说过使用EAFP作为主要数据验证结构,来自Java和C++背景.EAFP在Java中使用是否明智?或者是否存在过多的异常开销?我知道实际抛出异常时只有开销,所以我不确定为什么不使用更简单的EAFP方法.这只是偏好吗?

python java error-handling idioms

59
推荐指数
5
解决办法
2万
查看次数

标签 统计

error-handling ×1

idioms ×1

java ×1

python ×1