5
像Elm所说的那样,拥有“没有运行时异常”有什么好处?
某些语言声称具有“无运行时异常”,这是与具有它们的其他语言相比的明显优势。 我对此事感到困惑。 据我所知,运行时异常只是一种工具,使用得当: 您可以传达“脏”状态(抛出意外数据) 添加堆栈,您可以指向错误链 您可以区分混乱(例如,在无效输入上返回空值)和需要开发人员注意的不安全用法(例如,在无效输入上引发异常) 您可以通过异常消息为错误添加详细信息,从而提供进一步有用的详细信息,以帮助调试(理论上) 另一方面,我发现很难调试“吞噬”异常的软件。例如 try { myFailingCode(); } catch { // no logs, no crashes, just a dirty state } 因此,问题是:拥有“无运行时异常”的强大的理论优势是什么? 例 https://guide.elm-lang.org/ 实际上没有运行时错误。没有空值。没有未定义不是函数。