您可以在此处将“javascript”替换为其他语言。基本上我从阅读中发现的是 python 积极鼓励使用异常和一系列 if 测试来管理代码。当“鸭子打字”时,通常会引用可读性以及外观更清晰的代码
但是,通常在使用 javascript 或其他一些语言时,最佳实践似乎建议尝试“防御性编码”并尽可能多地覆盖 if 语句和返回类型,以避免使用异常。最常被引用的原因是异常是一项非常昂贵的操作。
举个例子: https://stackoverflow.com/a/8987401/2668545
- python 是否面临与 javascript 相同的异常成本和最好的 实践是这样的,因为有更多的强调 可读性/可调试性比性能好?
- python 处理异常的方式是否与 javascript 或其他不建议使用异常的语言不同?
- 我是否误解了建议?
- 还是其他原因?
最佳答案
我对此的看法是,尽管 Python 是一种动态类型的语言,但它同时也是强类型的,请参阅 the explanation here .这意味着如果在调用层次结构深处出现问题(例如尝试将空字符串转换为整数、除以零等),解释器会引发一个中断,使调用图冒泡。
Javascript 和许多其他解释型语言倾向于掩盖这些事情并尽可能长时间地继续默默地计算(垃圾)。本质上,程序员必须防御 Javascript 本身。
因此,当用户定义的 Python 模块以与标准库模块和解释器本身相同的方式运行时,它是一致的:实现预期结果或引发异常。
优点是:
- 提高了可读性:预期的操作顺序不会与错误处理混在一起。
- 额外的多态性。可以将任何对象作为函数参数传递,如果对象具有函数使用的属性/成员,事情就会解决。编写函数的程序员不必事先知道参数的确切类型(动态类型)。如果出现问题,将有调用跟踪以进行调查。防御性检查可能过于严格,同时也不是 100% 防弹。
可读性和可扩展性的考虑可能比性能更重要。
关于javascript - 为什么在 python 中使用异常比在 javascript 中更容易接受,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29472883/