请求宽恕,而不是许可:异常处理何时比先发制人的检查更好?
“请求宽恕而不是许可”:技术解释
在编程中,短语“请求宽恕而不是许可”描述了两种截然不同的编码风格:
“请求许可”样式:
if can_do_operation(): perform_operation() else: handle_error_case()
“请求宽恕”样式:
try: perform_operation() except Unable_to_perform: handle_error_case()
在“请求许可”方法中,存在 can_do_operation如果操作无法执行,() 检查会阻止执行 Perform_Operation() 调用。然而,这种方法依赖于 can_do_operation() 检查的准确性,这在动态环境中或处理外部资源时可能并不总是可靠。
“请求宽恕”的好处
“请求宽恕”风格提供了几种好处:
- 处理并发情况:在多线程或多资源环境中,检查和操作之间的条件可能会发生变化,使得“请求许可”的方式失效。
- 避免过度限制性检查:“请求许可”需要定义精确而全面的标准,可能具有挑战性且容易出错。 “请求宽恕”方法提供了更大的灵活性,并避免无意中排除有效操作。
示例:实例属性访问
在您的示例中,您询问在访问实例属性时如何使用“请求宽恕”。虽然通常被认为是程序员错误,但访问不存在的属性可能是有效的场景,例如在处理可选对象部分时。
而不是使用异常处理程序,检查属性是否不是 None 更Pythonic。对于可选属性,bar 属性通常最初初始化为 None 并设置为有意义的值(如果可用)。这允许进行以下测试:
if foo.bar is not None: handle_optional_part(foo.bar) else: default_handling()
结论
“请求宽恕而不是许可”原则建议将异常作为程序执行的自然部分,特别是当处理可选功能或外部资源交互。它在动态和并发环境中提供了更大的灵活性和适应性,同时仍然通过异常处理机制启用错误处理。
以上是请求宽恕,而不是许可:异常处理何时比先发制人的检查更好?的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

在使用Python的pandas库时,如何在两个结构不同的DataFrame之间进行整列复制是一个常见的问题。假设我们有两个Dat...

Uvicorn是如何持续监听HTTP请求的?Uvicorn是一个基于ASGI的轻量级Web服务器,其核心功能之一便是监听HTTP请求并进�...

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

攻克Investing.com的反爬虫策略许多人尝试爬取Investing.com(https://cn.investing.com/news/latest-news)的新闻数据时,常常�...
