// tt.cpp : 定义控制台应用程序的入口点。
//
/*
程序中的错误分为编译时的错误和运行时的错误。编译时的错误主要是语法错误,比如:句尾没有加分号,括号不匹配,关键字错误等,这类错误比较容易修改,因为编译系统会指出错误在第几行,什么错误。而运行时的错误则不容易修改,因为其中的错误是不可预料的,或者可以预料但无法避免的,比如内存空间不够,或者在调用函数时,出现数组越界等错误。如果对于这些错误没有采取有效的防范措施,那么往往会得不到正确的运行结果,程序不正常终止或严重的会出现死机现象。我们把程序运行时的错误统称为异常,对异常处理称为异常处理。C++中所提供的异常处理机制结构清晰,在一定程度上可以保证程序的健壮性。
C++中处理异常的过程是这样的:在执行程序发生异常,可以不在本函数中处理,而是抛出一个错误信息,把它传递给上一级的函数来解决,上一级解决不了,再传给其上一级,由其上一级处理。如此逐级上传,直到最高一级还无法处理的话,运行系统会自动调用系统函数terminate,由它调用abort终止程序。这样的异常处理方法使得异常引发和处理机制分离,而不在同一个函数中处理。这使得底层函数只需要解决实际的任务,而不必过多考虑对异常的处理,而把异常处理的任务交给上一层函数去处理。

C++的异常处理机制有3部分组成:try(检查),throw(抛出),catch(捕获)。把需要检查的语句放在try模块中,检查语句发生错误,throw抛出异常,发出错误信息,由catch来捕获异常信息,并加以处理。一般throw抛出的异常要和catch所捕获的异常类型所匹配。MFC定义了TRY、CATCH(及AND_CATCH、END_CATCH)和THROW(及THROW_LAST)等用于异常处理的宏,其本质上也是标准C++的try、catch和throw的进一步强化。MFC建议不再使用TRY、CATCH和THROW宏,而是直接使用标准C++的方式。

异常处理的一般格式为:

try
{
被检查语句
throw 异常
}
catch(异常类型1)
{
进行异常处理的语句1
}
catch(异常类型2)
{
进行异常处理的语句2
}

...

MFC较好地将异常封装到CException类及其派生类中,自成体系,下表给出了MFC 提供的预定义异常:

异常类 含义
CMemoryException 内存不足
CFileException 文件异常
CArchiveException 存档/序列化异常
CNotSupportedException 响应对不支持服务的请求
CResourceException Windows 资源分配异常
CDaoException 数据库异常(DAO 类)
CDBException 数据库异常(ODBC 类)
COleException OLE 异常
COleDispatchException 调度(自动化)异常
CUserException 用消息框警告用户然后引发一般 CException 的异常

下面对异常处理补充几点:
(1)try和catch块中必须要用花括号括起来,即使花括号内只有一个语句也不能省略花括号;
(2)try和catch必须成对出现,一个try_catch结果中只能有一个try块,但可以有多个catch块,以便与不同的异常信息匹配;
(3)如果在catch块中没有指定异常信息的类型,而用删节号"...",则表示它可以捕获任何类型的异常信息;
(4)如果throw不包括任何表达式,表示它把当前正在处理的异常信息再次抛出,传给其上一层的catch来处理;

(5)C++中一旦抛出一个异常,如果程序没有任何的捕获,那么系统将会自动调用一个系统函数terminate,由它调用abort终止程序;

*/

#include "stdafx.h"

#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
    int Erro=100;
    char szErro[100]="我是异常";
    try
    {
        //只呢个捕获一次
        //throw(Erro);
        throw(szErro);
    }
    catch(int i)
    {
        printf("出现异常:Erro==%d\n",i);
    }
    catch(char * pErro)
    {
        printf("%s\n",pErro);
    }
    catch(...)
    {
        printf("捕获任何类型的异常\n");
    }
    return 0;
}

C++异常处理try throw catch相关推荐

  1. C++异常处理:try,catch,throw,finally的用法

    C++异常处理:try,catch,throw,finally的用法 参考文章: (1)C++异常处理:try,catch,throw,finally的用法 (2)https://www.cnblog ...

  2. 22 C#中的异常处理入门 try catch throw

    22 C#中的异常处理入门 try catch throw 参考文章: (1)22 C#中的异常处理入门 try catch throw (2)https://www.cnblogs.com/thin ...

  3. java异常处理之throw, throws,try和catch

    转自 http://blog.csdn.net/zhouyong80/article/details/1907799  程序运行过程中可能会出现异常情况,比如被0除.对负数计算平方根等,还有可能会出现 ...

  4. C++异常处理(try catch throw)完全攻略

    C语言中文网推出辅导班啦,包括「C语言辅导班.C++辅导班.算法/数据结构辅导班」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践 + 永久学习.QQ在线,随时响应! 程序 ...

  5. Android异常处理——try、catch、finally、throw、throws

                            /* * try catch 是捕捉try部分的异常,当你没有try catch的时候,如果出现异常则程序报错; * 加上try catch,出现异常程 ...

  6. java throw 和catch_java异常处理之throw, throws,try和catch

    转自 http://blog.csdn.net/zhouyong80/article/details/1907799 程序运行过程中可能会出现异常情况,比如被0除.对负数计算平方根等,还有可能会出现致 ...

  7. java异常处理的throw和throws的区别

    1. 区别 throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理.而throw则是指抛出的一个具体的异常类型. 2.分别介绍 ...

  8. 六. 异常处理7.throw:异常的抛出

    到目前为止,你只是获取了被Java运行时系统抛出的异常.然而,程序可以用throw语句抛出明确的异常.Throw语句的通常形式如下:     throw ThrowableInstance; 这里,T ...

  9. Java异常处理throws/throw

    Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常). • Runtime异常:所有的RuntimeException类及其子类的实例: • Checked异常:不是Run ...

最新文章

  1. [并发编程] - Executor框架#ThreadPoolExecutor源码解读03
  2. 牛客 - 排序(模拟)
  3. jenkins 用户授权
  4. 漫画:什么是希尔排序?
  5. 按顺序读取选中的复选框
  6. 代码写的又好又快的秘诀
  7. teamcity mysql 配置_TeamCity
  8. 【2020-09-22】某药品信息APP抓包
  9. creo外观库_Proe/Creo外观着色与贴图
  10. 8年Python程序员,去2线城市大厂面试崩了……网友:太真实!
  11. 如何修改域名DNS服务器?修改DNS服务器常见问题汇总
  12. 计算机上面的用户帐户怎么删除,怎么删除用户帐户的教程详解【图解】
  13. 索引的作用?和它的优点缺点是什么?
  14. 迅雷9边下边播绑定第三方播放器
  15. 解二元微分通解和特解的关系,量子力学中的奇异点分析与高数中通解与特解的关系
  16. 无创脑刺激对不同神经和神经精神疾病睡眠障碍的影响
  17. Python 串级PID代码
  18. matlab 小波的分解与重构
  19. ETL学习-前期准备
  20. gridmanager使用于本地数据,使用function来模拟返回后端数据。

热门文章

  1. POI的入门:单元格样式处理
  2. Redis与Zookeeper实现分布式锁区别
  3. Fegion-4解决Fegion第一次请求timeout的问题
  4. solr java api_solr java api
  5. ui uview 安卓开发_uni-app UI框架之uview-ui使用教程
  6. 洛谷P2426 删数
  7. 201771010126 王燕《面向对象程序设计(Java)》第十六周学习总结
  8. 异步社区本周半价电子书(6月11-17日)
  9. Web server调研分析
  10. linux+tomcat+apache