zoukankan      html  css  js  c++  java
  • 异常处理

    异常机制 计算机计算的时候遇到除法 除数都是0的情况

         文件打开失败

         申请对内存的时候失败

    异常运行的时候遇到的问题 不是代码的问题

                 c语言通过返回值做异常处理

                 异常遇到之后 提交给调用方进行

    处理方式 try 测试代码

        catch捕获异常

        throw抛出异常

    有遇到异常直接利用throw进行抛出 交给外部的catch进行捕获 如果处理不了或者捕获不到交给上级

    往上级的try里面找 如果依然找不到 调用abort中断这个程序

    举出一些异常的例子:

    fopen 文件打开失败 能否在fopen里处理这个异常

    标准异常类  exception

    bad_alloc new内存申请太多 导致申请失败

    out_of_range 越界string字符串越界

    typeid 可以得到类型

    在多态中 父类执政如果指向null 使用typeid就汇报 bad_typeid

     1 #include<iostream>
     2 
     3 
     4 using namespace std;
     5 //文件对象  fstream+成员函数
     6 //c语言  文件指针+函数
     7 
     8 void fun(int x, int y)
     9 {
    10     if (y == 0)
    11     {
    12         throw"被除数为0";    //throw后面的异常可以是任意类型
    13     }
    14     cout << x / y << endl;
    15 }
    16 int main()
    17 {
    18     float num;
    19     cout << typeid(num).name() << endl;
    20 //如果表达式的类型是类类型且至少包含有一个虚函数,则typeid操作符返回表达式的动态类型,需要在运行时计算;否则,typeid操作符返回表达式的静态类型,在编译时就可以计算
    21     /*
    22     int *p=new int[0xfffffff];
    23     int *p1=new int[0xfffffff]; bad_alloc内存申请过多异常
    24     int *p2=new int[0xfffffff];
    25     int *p3=new int[0xfffffff];
    26     delete[] p;
    27     delete[] p1;
    28     delete[] p2;
    29     delete[] p3;
    30 
    31     string str("hello");
    32     str.at(8);out_off_range 越界—(c没有越界检查)
    33     
    34     */
    35     int x, y;
    36     try
    37     {
    38         //求两个数字相除
    39         cin >> x >> y;
    40         fun(x, y);
    41     }
    42     catch (int x)//捕获int类型的异常
    43     {
    44 
    45     }
    46     catch (char x)//捕获char类型的异常
    47     {
    48 
    49     }
    50     catch (char* str)//捕获字符串类型的异常
    51     {
    52         cout << str << endl;
    53         cout << "请重新输入" << endl;
    54         cin >> y;
    55         fun(x,y);
    56     }
    57     catch (...)//捕获任意类型的异常
    58     {
    59 
    60     }
    61 }
  • 相关阅读:
    [USACO07JAN]平衡的阵容Balanced Lineup
    洛谷 P4389 付公主的背包 解题报告
    多项式Ⅱ
    半平面交 板子
    Problem C Dist 解题报告
    二维凸包的板子
    洛谷 P4841 城市规划 解题报告
    广二模拟赛 Problem A: 青春野狼不做理性小魔女的梦 解题报告
    CF 997E 解题报告
    洛谷 P4244 [SHOI2008]仙人掌图 II 解题报告
  • 原文地址:https://www.cnblogs.com/liugangjiayou/p/11397406.html
Copyright © 2011-2022 走看看