至此,我在编程经验中意识到,至少与C相比,今天在使用的大多数语言(C++ 、. Net,Java等)中都可以使用异常处理能力真是令人头疼。进阶C类(class),让我与目前的范例相比,真正思考这些术语。
在C语言中,由程序员决定首先要避免发生错误,这对习惯于异常处理的任何人来说都是相当艰巨的。在我看来,我遇到的任何具有异常处理的语言都恰好是面向对象的。至少据我所知,第一种具有异常处理能力的面向对象语言是C++,它是C的一种演变。(如果我错了,请纠正我)
话虽这么说,是否与某种语言的面向对象性质有关,它允许进行异常处理,或者由于面向对象语言开始真正普及后,异常处理作为一项功能被添加了?在使排他性起作用的机器代码中,C缺少什么呢?
我发现了这个post有关如何在后台进行异常处理的方法,但是不确定该信息如何应用于我的问题(,即C是否缺少通知,延续等?)。提前致谢。
最佳答案
C在机器代码中什么都没有,并且异常处理在setjmp
和longjmp
中是很普遍的。
在纯过程语言中完全缺乏语言级功能的原因是,当不需要调用析构函数时,异常处理与setjmp
相同。异常处理以前是在外来语言中出现的,但是由于纯粹是语法糖而从未流行。但是,一旦析构函数进入现场并有必要进行堆栈展开,就必须提供语言级别的支持,并且异常处理已作为该语言的一部分得到广泛实现。