为什么在python中使用的异常比javascript更容易被接受

Why are using exceptions more acceptable in python than javascript

您可以在这里用其他语言替换"javascript"。基本上,我从阅读中发现,Python积极地鼓励使用异常和一系列if测试来管理代码。当"duck-typing"时,通常会引用可读性以及外观更清晰的代码。

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

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

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


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

    JavaScript和许多其他解释语言倾向于掩盖这些东西,并尽可能长时间地继续进行静默计算(垃圾)。从本质上讲,程序员必须防御JavaScript本身。

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

    其优点是:

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

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