首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么时候应该使用"if“检查错误,什么时候应该使用异常?

什么时候应该使用"if“检查错误,什么时候应该使用异常?
EN

Stack Overflow用户
提问于 2011-01-13 13:03:39
回答 4查看 198关注 0票数 5

你什么时候使用每一个?我发现我使用的if远不止是异常。似乎我正在使用我的“I”捕捉异常,甚至在我得到它们之前。我的代码里到处都是if。

EN

回答 4

Stack Overflow用户

发布于 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还是其他。

票数 4
EN

Stack Overflow用户

发布于 2011-01-13 13:25:20

Try catch语句旨在处理严重错误,特别是用于连接到外部服务,如web服务、数据库、web请求等,其中错误将会并预计会时不时地发生。在运行时环境中处理异常比编写良好的代码并利用给定语言的特性(如if或三元运算)要繁重得多。

尝试接球不是第一道防线,它们是使用防御性编码练习的最后一道防线。

票数 2
EN

Stack Overflow用户

发布于 2011-01-13 13:40:06

我不会重复很多人已经说过的话,但是使用异常有一个很大的好处,我想提一下:

如果某个例程失败,您可以很容易地决定应该处理异常间接层-而且您不需要在每个步骤之后使用错误检查来扩充更深的层。

当然,这并不能让你从拥有良好的清理代码的责任中解脱出来,这将使所有可能的执行路径都变得清晰:所以释放任何资源,套接字,提交或回滚事务,等等。有很多方法可以做到这一点:

块,允许任何异常传播,但清除之前的所有内容(许多语言,包括Python),

  • try... finally with语句(特定于Python),
  • RAII范例,涉及析构函数中的清理(主要是C++)。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4676957

复制
相关文章

相似问题

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