C++/C程序、函数结束



《一》C++函数结束与异常处理:

(1)return:
 (1.1)功能简介:
 
 return语句用于结束当前正在执行的函数,并将控制权返回给调用此函数的函数。

 (1.2)使用方法:

 (1.2.1)不带返回值的return语句只能用于返回类型为void的函数。
 (1.2.2)任何返回类型不是void的函数都必须返回一个值,而且这个返回值的类型必须和函数的返回类型相同,或者能隐式转化为函数的返回类型。
  如: return 0;

(3)try{ ...; throw  }catch(){};

funA(){     
  //....     
    while(...){              
       if(...){          
        throw new exception;       
       }    
    }

}


funB(){
   funA();
   }

 int main(){
  try{ 
    funB();
    }catch(exception* e) {
        //捕获到异常
    }
 } 

 解析:在函数A中,由于某种原因抛出了一个异常,这不但会退出循环,同时还会退出整个A函数。由于调用A函数的B没有捕获这个异常,因此B也要退出。异常继续往上传递,现在到了main函数,它里面使用try-catch捕获到了这个异常,因此进入了catch代码块。简而言之就是 throw一个异常会退出这个函数的调用堆栈,直到其上级堆栈有捕获为止。如果都没有捕获,那么程序退出。退出错误为,unhandled exception。

 总结:throw 抛出异常后,程序会跳转到catch处,如果没有匹配的catch,则程序结束。

(4)setjmp的使用:
---------------------------------------
《二》程序终止执行:
C++程序的终止和C语言中的程序终止函数很类似

(1)•从main函数返回


(2)•exit()函数被调用


(3)•abort()函数被调用


(4)•抛出一个未被捕捉到的异常

(5)用户通过Ctrl+C或Ctrl+break操作来终止程序:

注意:利用exit()函数终止的程序,所有已经构造起来的静态对象的析构函数都将被调用,然而,如果程序是调用abort函数终止,那么析构函数都不会被调用。因此在析构函数里调用exit()函数可能会造成无穷递归。

-----------------------------------------------



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值