你什么时候使用每一个?我发现我使用的if远不止是异常。似乎我正在使用我的“I”捕捉异常,甚至在我得到它们之前。我的代码里到处都是if。
发布于 2011-01-13 13:29:59
EAFP: Easier to ask for forgiveness than permission.
常见的Python编码风格是假设存在有效的键或属性,并在假设证明为假时捕获异常。
这与许多其他语言常见的LBYL (Look before you leap)风格形成了鲜明对比。
更新1
当然,您必须确保您处理任何捕获的异常,而不是默默地忽略它们,否则您将浪费大量的时间进行调试!pass可能不是您要找的!
更新2
您应该捕获期望为raise-d的特定于built-in exceptions的异常,无论它们是built-in exceptions还是其他。
发布于 2011-01-13 13:25:20
Try catch语句旨在处理严重错误,特别是用于连接到外部服务,如web服务、数据库、web请求等,其中错误将会并预计会时不时地发生。在运行时环境中处理异常比编写良好的代码并利用给定语言的特性(如if或三元运算)要繁重得多。
尝试接球不是第一道防线,它们是使用防御性编码练习的最后一道防线。
发布于 2011-01-13 13:40:06
我不会重复很多人已经说过的话,但是使用异常有一个很大的好处,我想提一下:
如果某个例程失败,您可以很容易地决定应该处理异常间接层-而且您不需要在每个步骤之后使用错误检查来扩充更深的层。
当然,这并不能让你从拥有良好的清理代码的责任中解脱出来,这将使所有可能的执行路径都变得清晰:所以释放任何资源,套接字,提交或回滚事务,等等。有很多方法可以做到这一点:
块,允许任何异常传播,但清除之前的所有内容(许多语言,包括Python),
try... finally with语句(特定于Python),https://stackoverflow.com/questions/4676957
复制相似问题