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

    语言的异常有三类:语法错误,逻辑错误,运行时异常(exception)

     

    可以看到,所有的异常类都继承自exception基类,exception类下的logic_error和runtime_error又是两个比较大类,包含有多个自类,它们分表代表逻辑类错误和运行时错误

     

    举例说明,如:

    1. 我们使用new开辟内存时,如果遇到空间不足,则会抛出bad_alloc的异常

    2. 我们使用dynamic_cast()进行动态类型转化失败时,则抛出bad_typeid异常

    3. 我们在计算数值超过该类型表示的最大范围时,则抛出overflow_error异常,表示运算上溢,同理,underflow_error表示运算下溢

    4. 我们在使用string类下标但越界时,则抛出out_of_range异常

    5. 需要注意的是,使用C++自带的标准异常类,需要包含对应的头文件:

       

      因为exception、bad_exception类在头文件exception中定义

      bad_alloc类在头文件new中定义

      bad_typeid类在头文件typeinfo中定义

      ios_base::failure类在头文件ios中定义

      其他异常类在stdexcept中定义

    #include <iostream>
    #include<new>
    #include<stdexcept>
    using namespace std;
    //异常处理 
    int main()
    {
       string *s;
       try
       {
           s=new string("www.dotcpp.com");
           cout<<s->substr(15,5);
         }
         catch(bad_alloc &t)
         {
           cout<<"Exception occurred:"<<t.what()<<endl;
         }
         catch(out_of_range &t)
         {
           cout<<"Exception occurred:"<<t.what()<<endl;
         }
        return 0;
         
    }
    

      

  • 相关阅读:
    Day15模块(导入,使用)
    day14 迭代器,生成器,函数的递归调用
    Day13有参装饰器,三元表达式,匿名函数
    re模块
    Day12装饰器
    subprocess模块windows系统命令和linux系统命令
    Day11名称空间,作用域,闭包函数
    识别 Linux上的设备(磁盘)类型
    Linux lsblk和df命令区别
    Linux远程拷贝scp
  • 原文地址:https://www.cnblogs.com/nanfengnan/p/14415422.html
Copyright © 2011-2022 走看看