异常处理:Try/Except 与 If/Else
当面对代码中潜在的错误或异常时,程序员常常会犹豫是否使用try/ except 块或 if/else 语句。虽然这个决定可能看起来微不足道,但它可以显着影响代码设计、性能和可读性。
Try/Except 与 If/Else:首选方法
一般PEP 20 支持的共识是在以下情况下将 try/ except 优先于 if/else:
速度优化
考虑访问列表中元素的示例:
<code class="python">try: x = my_list[index] except IndexError: x = 'NO_ABC'</code>
这里,当索引很可能在列表中找到时,try/ except 是有利的,可以最大限度地减少 IndexError 的发生。相反,if/else 方法需要额外的查找:
<code class="python">if index < len(my_list): x = my_list[index] else: x = 'NO_ABC'
异常处理和可读性
Python 鼓励使用异常作为其 EAFP 的一部分(请求宽恕比请求许可更容易)哲学。通过在 try/ except 块中优雅地捕获错误,程序员可以确保异常不会默默地通过。此外,try/ except 允许更简洁和优雅的代码:
<code class="python">Worse (LBYL: 'look before you leap'): if not isinstance(s, str) or not s.isdigit(): return None elif len(s) > 10: #too many digits for int conversion return None else: return int(s) Better (EAFP: Easier to ask for forgiveness than permission): try: return int(s) except (TypeError, ValueError, OverflowError): #int conversion failed return None</code>
以上是Try/Except 与 If/Else:何时使用它们进行错误处理的详细内容。更多信息请关注PHP中文网其他相关文章!