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

Why are using exceptions more acceptable in python than javascript

您可以在这里用其他语言替换"javascript"。基本上我从阅读中发现的是 python 积极鼓励使用异常和一系列 if 测试来管理代码。当 'duck-typing'

时,通常会引用可读性以及外观更清晰的代码

然而,通常在使用 javascript 或其他一些语言时,最佳实践似乎建议尝试 'code defensively' 并尽可能多地覆盖 if 语句和 return类型以避免使用异常。最常被引用的原因是因为异常是一个非常昂贵的操作。

举个例子:

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

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

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

优点是:

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

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