学习笔记之深入浅出MFC 第8章 C++重要性质---异常处理(Exception Handing)
2016-05-04 08:47
381 查看
异常情况(Exception)是一个颇为新鲜的C++语言特性,可以帮助你管理执行期的错误,特别是那些发生在多层嵌套函数调用中的错误。现在C++编译器必须支持异常处理情况。
C++的exception可以从多层嵌套的例程调用中直接以一条快捷方式撤回到异常情况处理例程(exception handler),这种“错误管理方式”远比结构化程序中经过层层的例程传回一系列的错误状态来得好。事实上,exception handling是MFC和OWL两个application frameworks的防弹中心。
C++导入了三个新的exception保留字:
1、try。之后跟随一段以{ }圈出来的程序代码,exception可能在其中发生。
2、catch。之后跟随一段以{ }圈出来的程序代码,那是exception处理例程所在。catch应该紧跟在try之后。
3、throw。这是一个指令,用来产生(丢出)一个exception。
下面是个实例:
try{
//try block.
}
catch(char *p) {
printf("Caught a char* exception, value %s\n", p);
}
catch(double d) {
printf("Caught a numeric exception, value %g\n", d);
}
catch(. . .) { //catch anything
printf("Caught an unknown exception\n");
}
MFC早就支持exception,而且编译器本身又支持完整的C++exception,所以MFC因此有了两个exception版本:你可以使用语言本身提供的语句,也可以沿用MFC古老的方法(以宏形式出现)。
MFC的exception机制是以宏和exception types为基础的。这类宏类似C++的exception保留字,操作也很像。MFC以下列宏仿真C++ exception handling:
TRY
CATCH(type,object)
AND_CATCH(type,object)
END CATCH
CATCH_ALL(object)
AND CATCH ALL(object)
END_CATCH_ALL
END TRY
THROW()
THROW LAST()
MFC所使用的语法与日渐浮现的标准稍微不同,不过其间差异微不足道。为了以MFC捕捉exceptions,你应该建立一个TRY区块,下面接着CATCH区块:
TRY{
//try block
}
CATCH (CMemoryException , e) {
printf ( "Caught a memory exception.\n");
}
AND CATCH ALL (e) {
printf ("Caught an exception.\n");
}
END_CATCH_ALL
感觉关于异常处理有点抽象,主要是没有实例帮助理解,实在不好意思,等我碰到程序中的例子了再回来补充实例。
C++的exception可以从多层嵌套的例程调用中直接以一条快捷方式撤回到异常情况处理例程(exception handler),这种“错误管理方式”远比结构化程序中经过层层的例程传回一系列的错误状态来得好。事实上,exception handling是MFC和OWL两个application frameworks的防弹中心。
C++导入了三个新的exception保留字:
1、try。之后跟随一段以{ }圈出来的程序代码,exception可能在其中发生。
2、catch。之后跟随一段以{ }圈出来的程序代码,那是exception处理例程所在。catch应该紧跟在try之后。
3、throw。这是一个指令,用来产生(丢出)一个exception。
下面是个实例:
try{
//try block.
}
catch(char *p) {
printf("Caught a char* exception, value %s\n", p);
}
catch(double d) {
printf("Caught a numeric exception, value %g\n", d);
}
catch(. . .) { //catch anything
printf("Caught an unknown exception\n");
}
MFC早就支持exception,而且编译器本身又支持完整的C++exception,所以MFC因此有了两个exception版本:你可以使用语言本身提供的语句,也可以沿用MFC古老的方法(以宏形式出现)。
MFC的exception机制是以宏和exception types为基础的。这类宏类似C++的exception保留字,操作也很像。MFC以下列宏仿真C++ exception handling:
TRY
CATCH(type,object)
AND_CATCH(type,object)
END CATCH
CATCH_ALL(object)
AND CATCH ALL(object)
END_CATCH_ALL
END TRY
THROW()
THROW LAST()
MFC所使用的语法与日渐浮现的标准稍微不同,不过其间差异微不足道。为了以MFC捕捉exceptions,你应该建立一个TRY区块,下面接着CATCH区块:
TRY{
//try block
}
CATCH (CMemoryException , e) {
printf ( "Caught a memory exception.\n");
}
AND CATCH ALL (e) {
printf ("Caught an exception.\n");
}
END_CATCH_ALL
感觉关于异常处理有点抽象,主要是没有实例帮助理解,实在不好意思,等我碰到程序中的例子了再回来补充实例。
相关文章推荐
- windows下使用gvim搭建简单的IDE编译环境(支持C/C++/Python等)
- C++输入输出运算符重载(“>>”“<<”)
- C++实现一个按键精灵
- MOOC北京理工《C语言程序设计(上)》第5周第3题:求最小m值
- 成为C++高手之第一个程序
- C++11 多线程
- 【步兵 c++】 多态&虚函数
- C++11 正则表达式——实例3
- C++11 正则表达式——实例2
- 关于模板编程的一个例子 来自深度探索c++对象模型
- 编译原理词法分析
- C++11 正则表达式——实例1
- C++中的命名空间、using用法、区域运算符(::)详解
- C++11:匿名函数(lambda函数/表达式)及其用法
- 状态模式-c++实现
- 第五次程序设计作业 C++计算器雏形 调用文件输入输出
- Restore IP Addresses
- 用c++写一个简单的计算器程序
- c++primer第二遍阅读感悟(chap3)
- c++写的简单计算器