在try和except语句中使用return语句是否正确?

smi*_*ith 5 python methods exception-handling return try-except

如果我在函数末尾有这样的代码:

try:
    return map(float, result)
except ValueError, e:
    print "error", e
Run Code Online (Sandbox Code Playgroud)

在方法的返回部分中使用try /正确吗?有解决这个问题的更明智的方法吗?

Jan*_*sky 7

保持简单:没有尝试块

我花了一些时间来学习,在Python中,函数抛出异常是很自然的。我在解决问题的地方花了太多的精力。

如果您只是让异常冒出来,代码就会变得更简单,也更易于维护。这样可以在适当的情况下在级别上检测问题。

一种选择是:

try:
    return map(float, result)
except ValueError, e:
    print "error", e
    raise
Run Code Online (Sandbox Code Playgroud)

但这从一些深层功能中引入了打印。可以提供相同的方法raise,让上层代码执行适当的操作。

在这种情况下,我的首选解决方案是

return map(float, result)
Run Code Online (Sandbox Code Playgroud)

如果有问题,则无需四处跳舞,去做,应该做的事情以及抛出异常。