1.程序分为Debug版本和Release版本:Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
2.【生成解决方案】命令让Visual Studio 2005编译各个源文件,并将它们链接成为.exe文件或其他形式的程序文件。
3.【重新生成解决方案】这个命令让编译器重新编译所有源文件,即使这些文件没有被修改过。
4..【清理解决方案】命令用于清除解决方案在以前生成可执行文件时产生的旧文件。
5.只有在程序挂起的时候才能添加监视等功能。
6.调用堆栈:调用堆栈反映了当前断点处函数是被哪些函数按照什么顺序调用的。在调用堆栈对话框中显示了一个调用系列,最上面的是当前函数,往下依次是调用函数的上级函数。单击这些函数名可以跳到对应的函数中去。
7.try throw catch异常处理。try块将检测以下三个函数中是否有抛出的异常。
Throw抛出异常,catch找到异常后的处理。
8.如果没有异常发生,则执行try块中的代码,和try块相关联的处理代码catch被忽略。
9.需要注意的是try块可以包含任何C++语句表达式以及声明,一个try块引入一个局部域,在try块内声明的变量不能在try块外被引用,包括在catch子句中。
10.当某条语句抛出异常时,跟在该语句后面的语句将被跳过,程序执行权被转交给处理异常的catch子句。
11.程序异常类举例:
class NumberExc
{
public:
NumberExc(int _excNum)
{
errorNum = _excNum;
cout<<"捕获到异常"<
}
void proExc()
{
switch(ExcNum)
{
case 0:
cout<<"除数为0"<
break;
case 1:
cout<<"数字过大"<
break;
case 2:
cout<<"数字过小"<
break;
}
}
int ExcNum;
};
void TestFunction1(int ival)
{
if(ival>1000)
throw NumberExc(1);
}
void TestFunction2(int ival)
{
if(0 == ival)
throw NumberExc(0);
}
void TestFunction3(int ival)
{
if(ival<0)
throw NumberExc(2);
}
int main()
{
try
{
TestFunction1(13);
TestFunction2(0);
TestFunction3(16);
}
catch(NumberExc ne)
{
ne.proExc();
}
return 0;
}
12.代码如下:
//#include "Utility.h"
//
///*
//C++中的异常处理:
// 一般情况下,我们对于程序中可以预知,但无法避免的潜在错误
//进行异常处理操作。
//
//关键字:try、throw、catch
//格式:
//try
//{
//可能抛出异常的代码段,这里应该包含 if() throw XXX ;
//}
//catch(异常类型1)
//{
//对异常类型1的处理代码
//}
//catch(异常类型2)
//{
//对异常类型2的处理代码
//}
//catch(...)
//{
//对catch序列中没有被处理的任何异常类型进行处理
//}
//*/
//
enum Exception_Type{ET_ZERO,ET_TOOBIG,ET_TOOSMALL};
class CException
{
public:
Exception_Type m_Type;
public:
CException(Exception_Type _type):m_Type(_type)
{
cout<<"异常处理类..."< } void processExc() { switch(m_Type) { case ET_ZERO: cout<<"除数为0"< break; case ET_TOOBIG: cout<<"数据过大"< break; case ET_TOOSMALL: cout<<"数据过小"< break; } } }; void main() { try { cout<<"请输入2个整型数据,介于0.0f-10.0f之间,第二个数据不能为0:"; float fValue1 = 0.0f; float fValue2 = 0.0f; cin>>fValue1>>fValue2; if( fValue1 < 0.0f || fValue2 < 0.0f) throw CException( ET_TOOSMALL ); else if(fValue1 > 10.0f || fValue2 > 10.0f) throw CException( ET_TOOBIG ); // 浮点数与0的比较方式: else if( abs( fValue2 -0.0f ) < 0.00001 ) throw CException(ET_ZERO); } catch(CException obj) { obj.processExc(); } catch(char * pStr) { cout<<"捕获到的异常为:"< } catch(...) { cout<<"未知异常,请自行查代码解决......"< } system("pause"); } //---------多级多层异常处理--------- #include "Utility.h" void TestFunc() { //内层try中可能被抛出的异常优先调用内层catch //序列进行处理如果内层catch序列无法处理该异常, //向外层的catch序列传递该异常 try { cout<<"TestFunc Called..."< throw "我是TestFunc中被抛出的异常"; } catch ( int ) { } } void main() { try { TestFunc(); } catch ( char * pStr) { cout<<"Main中的catch序列捕获到异常:"; cout< } //注意...的用法:一般...出现在最外层 //的catch序列的“最后” catch (...) { } system("pause"); }