zoukankan      html  css  js  c++  java
  • C++异常

    转载:https://www.cnblogs.com/riskyer/p/3221912.html

    C++的异常处理结构为:

    try

    {

    //可能引发异常的代码

    }

    catch(type_1 e)

    {

    // type_1类型异常处理

    }

    catch(type_2 e)

    {

    // type_2类型异常处理

    }

    catch (...)//会捕获所有未被捕获的异常,必须最后出现

    {

    }

    异常的抛出方式使用throw(type e),try、catch和throw都是C++为处理异常而添加的关键字。

    异常处理的过程:

    1、  程序或运行库遇到一个错误状况(在try块中);

    2、  抛出一个异常,程序的运行停止于异常点;

    3、  开始搜索异常处理函数。搜索沿调用栈向上搜索,搜索结束于找到了一个异常申明与异常对象的静态类型相匹配;

    4、  进入相应的异常处理函数;

    5、  异常处理函数结束后,跳到此异常处理函数所在的try 块下面最近的一条语句开始执行。

    在C++中,throw抛出异常的特点有:

    (1)可以抛出基本数据类型异常,如int和char等。其中;

    (2)可以抛出复杂数据类型异常,如结构体(在C++中结构体也是类)和类;

    (3)C++的异常处理必须由调用者主动检查。一旦抛出异常,而程序不捕获的话,那么abort()函数就会被调用,弹出如图1所示的对话框,程序被终止;

    (4)可以在函数头后加throw([type-ID-list])给出异常规格,声明其能抛出什么类型的异常。type-ID-list是一个可选项,其中包括了一个或多个类型的名字,它们之间以逗号分隔。如果函数没有异常规格指定,则可以抛出任意类型的异常。

    如果一种异常没有被指定catch模块,则将导致terminate()函数被调用,terminate()函数中会调用ahort()函数来终止程序。可以通过set_terminate(terminate_handler)函数为terminate()专门指定要调用的函数。

  • 相关阅读:
    Path类的最全面具体解释
    数据挖掘之分类算法---knn算法(有matlab样例)
    Android View框架的measure机制
    2017年本博客知识体系引导(更新至2017.8.11)
    [DevExpress]DevExpress 中 汉化包 汉化方法
    盗墓笔记第一季全(12集)下载地址
    浅谈spring——注解配置(九)
    git使用系列(一)
    算法与数据结构(一)
    phpstrom 2016.2 注册服务器地址
  • 原文地址:https://www.cnblogs.com/Toya/p/9723940.html
Copyright © 2011-2022 走看看