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

原创 2014年06月08日 20:50:34


《一》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()函数可能会造成无穷递归。

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



 

相关文章推荐

理解C++中函数的返回

连续几年的C++程序设计课教学中,学生中总有人要求为他们单独解释函数的返回(return)究竟是什么意思。各种书中都会详讲返回值的问题,而学生们掌握的难点却是在返回至何处执行。本文试图通过对一般函数及...

C++中利用系统函数启动或关闭外部程序(待完善)

1.通过C++编程启动或关闭外部程序: (1-1)启动程序 WinExec("G://test//TestApp.exe",SW_SHOW)正常 WinExec("G://test//TestApp...
  • IT_ZB
  • IT_ZB
  • 2016年06月07日 12:48
  • 789

c/c++ 结束进程的方法

1.使用ExitProcess()结束进程      进程只是提供了一段地址空间和内核对象,其运行时通过在其地址空间内的主线程来体现的。当主线程的进入点函数返回时,进程也就随之结束。这种进程的终止方...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

C++中Exit()与atexit()函数的使用

来源:http://blog.sina.com.cn/s/blog_5cec5bad0100b0x2.html   一、exit()函数 函数声明:void exit(int state); ...
  • sruru
  • sruru
  • 2012年09月04日 10:59
  • 13590

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student

转自:http://www.360doc.com/content/12/0313/16/1429048_194040867.shtml 谢谢观...

C++的成员函数在多线程下运行的测试

VC6下新建一基于对话框的工程,在类A中添加成员函数 CString CCTestMutiThreadFuncDlg::AddStr(CString aStr, CString bStr) { re...

vim使用—移动到文件开始和结束位置和当前位置(gg,G)、快速定位到当前光标所在变量或函数的定义处(gd)、自动对齐C和C++程序(先gg再=再G)、自动补全变量名,函数名和字符串ctrl+n或ct

1、将光标移动到文件的开始位置或结束位置:           gg     将光标移动到文件的开始位置。               G      将光标移动到文件的最后一行。      ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++/C程序、函数结束
举报原因:
原因补充:

(最多只允许输入30个字)