“请求宽恕而不是许可”:技术解释
在编程中,短语“请求宽恕而不是许可”描述了两种截然不同的编码风格:
“请求许可”样式:
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中文网其他相关文章!