C 语言中 setjmp 和 longjmp( 五 )

Java、C# 等面向对象语言中都有异常处理的机制 , 如下就是典型的 Java 中异常处理的代码 , 两个数相除 , 如果被除数为0抛出异常 , 在函数 f() 中可以获取该异常并进行处理:

doubledivide(doubletodoubleby)throwsBad{

if(by==0)

thrownewBad(\"Cannot / 0\");

returnto/by;

voidf(){

try{

divide(20);

//...

catch(Bade){

print(e.getMessage());

print(\"done\");

在 C 语言中虽然没有类似的异常处理机制 , 但是我们可以使用 setjmp 和 longjmp 来模拟实现该功能 , 这也是这两个函数的一个重要的应用:

推荐阅读