Eva*_*aas 7 error-handling programming-languages language-history
关于词源向导的问题:哪种编程语言是第一个使用今天的Java/.NET语言中的try/catch/finally语法?
我相信它是 C++,我认为 Java/C# 最终添加到资源清理中(最终不在 C++ 中)。不幸的是,我没有参考资料......然而。
所有异常语法的整洁页面:http : //en.wikipedia.org/wiki/Exception_handling_syntax
我相信它是 C++。如果不是,那么 Stroustrup 需要给予信任。在他的论文中:http : //www.research.att.com/~bs/except.pdf他没有提到任何影响,也没有引用除他自己以外的任何其他材料。
小智 5
由Mike Fikes发布在 Twitter 上,由Pawe与我分享?卡帕?a :
MacLisp 添加了函数
ERR,它会发出错误信号。如果ERR在ERRSET表单的动态上下文中调用,则ERR返回的参数作为ERRSET表单的值。程序员很快开始使用
ERRSETandERR不是捕获和发出错误信号,而是用于更一般的控制目的(动态非本地退出)。不幸的是,这种使用ERRSET也悄悄地捕获了意外错误,使程序更难调试。一对新基元,CATCH和THROW,引入MacLisp 1972年6月 [重点煤矿],这样ERRSET可以达到预定可使用错误捕获的保留。给我们的教训
ERRSET和CATCH是非常重要的。设计者ERRSET和后来的设计者ERR想到了一种特殊情况,并定义了一对原语来解决这种情况。但是因为这些设施提供了有用且强大的功能(错误捕获加上动态非本地退出)的组合,程序员开始以意想不到的方式使用这些设施。然后设计人员不得不返回并将所需的内容拆分为具有替代接口的部分。这种精心设计、意外使用和后来重新设计的模式在 Lisp 的演变中很常见。
——摘自 Guy Steele 和 Richard Gabriel 的“The Evolution of Lisp”
来源:https : //twitter.com/mfikes/status/881943130588753920
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">“The Evolution of Lisp,” by Guy Steele and Richard Gabriel</p>— Mike Fikes (@mfikes) <a href="https://twitter.com/mfikes/status/881950560508940288">July 3, 2017</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>Run Code Online (Sandbox Code Playgroud)