程序调试与异常处理
来源:互联网 发布:mac电脑excel换行 编辑:程序博客网 时间:2024/05/17 00:55
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<<"捕获到异常"<<endl;
}
void proExc()
{
switch(ExcNum)
{
case 0:
cout<<"除数为0"<<endl;
break;
case 1:
cout<<"数字过大"<<endl;
break;
case 2:
cout<<"数字过小"<<endl;
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<<"异常处理类..."<<endl;
}
void processExc()
{
switch(m_Type)
{
case ET_ZERO:
cout<<"除数为0"<<endl;
break;
case ET_TOOBIG:
cout<<"数据过大"<<endl;
break;
case ET_TOOSMALL:
cout<<"数据过小"<<endl;
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<<"捕获到的异常为:"<<pStr<<endl;
}
catch(...)
{
cout<<"未知异常,请自行查代码解决......"<<endl;
}
system("pause");
}
//---------多级多层异常处理---------
#include "Utility.h"
void TestFunc()
{
//内层try中可能被抛出的异常优先调用内层catch
//序列进行处理如果内层catch序列无法处理该异常,
//向外层的catch序列传递该异常
try
{
cout<<"TestFunc Called..."<<endl;
throw "我是TestFunc中被抛出的异常";
}
catch ( int )
{
}
}
void main()
{
try
{
TestFunc();
}
catch ( char * pStr)
{
cout<<"Main中的catch序列捕获到异常:";
cout<<pStr<<endl;
}
//注意...的用法:一般...出现在最外层
//的catch序列的“最后”
catch (...)
{
}
system("pause");
}
- 程序调试与异常处理
- 异常处理与程序调试
- 第十五章 程序调试与异常处理
- C++ 程序调试与异常处理
- Python(异常处理与程序调试)
- 异常处理与调试
- [转]DELPHI程序的调试与异常处理
- Python宝典第七章:异常处理与程序调试
- python 第十七周 异常处理与程序调试
- 【C#】基础知识—程序调试与异常处理机制
- javascript入门篇之程序调试与异常处理
- 第7章 程序调试与异常处理
- Delphi异常处理与调试
- Delphi异常处理与调试
- pytthon-异常处理与调试
- 异常处理与程序中断
- DELPHI基础教程 第十二章 异常处理与程序调试(一)
- DELPHI基础教程 第十二章 异常处理与程序调试(二)
- 自定义控件
- 将中缀表达式转换为表达式树
- mybatis学习二
- MPPS SCU
- codeforces 268D Wall Bars
- 程序调试与异常处理
- StringTokenizer类的使用方法
- javascript对象实例化
- Android Studio新建类没有构造函数
- Yox 系列项目
- 图解 Android 事件分发机制
- 第二章小结
- 逃亡的准备(多重背包+二进制优化)
- 在Ubuntu下安装torch7