【问题标题】:Why are using exceptions more acceptable in python than javascript为什么在 python 中使用异常比在 javascript 中更容易接受
【发布时间】:2015-04-06 14:05:36
【问题描述】:

您可以在此处将“javascript”替换为其他语言。基本上我从阅读中发现,python 积极鼓励使用异常和一系列 if 测试来管理代码。在“duck-typing”时,通常会引用可读性以及看起来更清晰的代码

但是,通常在使用 javascript 或其他一些语言时,最佳实践似乎建议尝试“防御性编码”并尽可能多地覆盖 if 语句和返回类型,以避免使用异常。最常被引用的原因是异常是一项非常昂贵的操作。

这是一个例子: https://stackoverflow.com/a/8987401/2668545

  • python 是否面临与 javascript 相同的异常成本和最好的 实践是这样的,因为有更多的重点 可读性/可调试性比性能好?
  • 与 javascript 或其他不建议使用异常的语言相比,python 处理异常的方式是否不同?
  • 我是否误解了建议?
  • 还是别的什么?

【问题讨论】:

标签: javascript python exception-handling


【解决方案1】:

我对此的看法是,尽管 Python 是一种动态类型语言,但它同时也是强类型的,请参阅 the explanation here。这意味着如果调用层次结构的深处出现问题(例如尝试将空字符串转换为整数、除以零等),解释器会引发一个中断,从而使调用图冒泡。

Javascript 和许多其他解释性语言倾向于掩盖这些事情,并尽可能长时间地继续默默地计算(垃圾)。本质上,程序员必须防御 Javascript 本身。

因此,当用户定义的 Python 模块与标准库模块和解释器本身的行为方式相同时,这是一致的:实现预期结果或引发异常。

优点是:

  • 提高了可读性:预期的操作顺序不会与错误处理混合。
  • 额外的多态性。可以将任何对象作为函数参数传递,如果对象具有函数使用的属性/成员,事情就会解决。编写函数的程序员不必事先知道参数的确切类型(动态类型)。如果出现问题,将有一个呼叫跟踪进行调查。防御性检查可能过于严格,同时也不是 100% 防弹。

可读性和可扩展性的考虑可能比性能更重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-17
    • 2019-04-05
    • 1970-01-01
    • 2022-01-18
    • 2012-12-02
    • 2011-07-17
    • 2011-06-20
    • 2016-01-02
    相关资源
    最近更新 更多