谁发明了throw/try/catch [/ finally]这种错误处理方式?

Fru*_*nsi 14 theory language-features exception-handling language-design exception

我的问题更多的是历史性而非实际性:

  1. 谁发明了它?
  2. 首先使用哪种语言(以及在何种程度上)?
  3. 什么是最初的想法,基本概念(这些天实际问题必须解决,欢迎论文)?
  4. 的Lisp空调系统的电流异常处理的祖先?

abe*_*yer 5

今天的Common Lisp条件系统是一个相对较新的人.该设计基于以前的系统,但直到80年代后期的CLTL2时才被包含在Common Lisp语言中.

我相信该书中的条件章节对设计的历史和背景有相当多的评论,并且参考了相关研究和类似系统的先前实现.


Joh*_*ers 5

VAX CPU 有一个基于堆栈的异常处理系统。在每个调用帧中,分配一个 32 位单元并用零填充。如果被调用的子例程想要处理异常,它所要做的就是用异常处理例程的地址填充该单元格。

当异常发生时,就会进行堆栈搜索。这很容易,因为堆栈帧都链接在一起。具有非零条目的第一个堆栈帧将导致堆栈展开到该点,并且将调用异常处理程序。

我记得这是处理器针对高级语言的功能之一,但我不知道有一种高级语言利用了该功能。我相信它是由库代码使用的,这些代码很可能是用汇编程序编写的。