python zen_Zen的Python如何处理错误

python zen

处理“异常条件”是编程中争议最大的问题之一。 那可能是因为赌注很高:错误处理的错误值甚至可以使最大的系统崩溃。 由于从本质上讲,“例外条件”受到的测试最少,但发生的频率令人不快,因此正确处理它们通常可以将讲述恐怖故事的系统与“起作用”的系统区分开。

从Java的检查异常到Erlang的故障隔离,再到Haskell的Maybe ,不同的语言对错误处理的态度截然不同。

Zen提供了有关该主题的Python冥想。

错误绝不能默默传递……

在Python的Zen成为Tim Peters眼中的眨眼之前,在Wikipedia非正式地被称为“ Wiki”之前,第一个WikiWiki站点C2作为大量编程指南而存在。 这些原则大部分来自Smalltalk编程社区。 Smalltalk的想法影响了许多面向对象的语言,包括Python。

C2 Wiki定义了武士原则:“取得胜利,或根本不取得胜利”。 用Pythonic术语,它鼓励避免使用哨兵值,例如返回None-1以指示无法完成任务,从而引发异常。 是无声的:它看起来像一个值,可以放在变量中并传递。 有时,它甚至是有效的返回值。

return_value = call_to_function(parameter)行并进入堆栈,可能会导致程序崩溃。

崩溃很容易调试:有一个堆栈跟踪指示问题以及调用堆栈。 失败可能意味着该程序没有满足必要条件,需要人工干预。 这可能意味着程序逻辑错误。 在这两种情况下,大声的故障都比隐藏的“丢失”值好,用None感染程序的有效数据,直到在某个地方使用它,并且错误消息显示“ None没有方法split ”,您可能已经知道。

除非明确地保持沉默。

有时需要明确捕获异常。 我们可能会期望文件中的某些行格式错误,并希望以特殊的方式处理它们,也许是通过将它们放入“人为看待的行”文件中,而不是崩溃整个程序。

Python允许我们使用except捕获异常。 这意味着可以显式消除错误。 这种明确性意味着在代码审查中可以看到除外行。 质疑为什么这是使异常沉默并从异常中恢复的正确位置是有道理的。 询问我们是否捕获了太多或更少的异常是有意义的。

因为所有这些都是明确的,所以有人可以阅读代码并了解哪些特殊情况是可以恢复的。

翻译自: https://opensource.com/article/19/12/zen-python-errors

python zen

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值