IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c++异常处理 -> 正文阅读

[C++知识库]c++异常处理

在设计程序时,通常程序也会出错,程序的错误可以分为三种:语法错误,逻辑错误和运行时错误

语法错误发生在编译和链接阶段

逻辑错误是我们在编写的代码思路有问题,达不到需求目标。通过调试来解决

调试方式:通过打印信息-- printf 或者 通过IDE调试跟踪查看栈信息

运行时错误是指程序在运行期间发生的错误,C语言 --- perror

在C++,为了更好运行和维护,引入异常(Exception)机制,让我们能够捕获运行时错误,给程序一次最后说话机会

1 捕获异常

在C++中,可能借助异常机制来捕获异常

1. throw ----- 扔,抛 ----将异常继续向调用者扔或者抛

2. try{

????????//正常执行的语句,但是在执行过程中,可能会抛出异常语句

????????}catch(exceptionType? ? ?val)

????????{

????????//处理异常的语句

???????? }

注意事项:

1.try和catch都是C++关键字,后跟语句块,不能省略{}

2.如果异常没有发生,它就检测不到,那么catch就会捕获不异常,该语句不会执行 3.exceptionType val类型要跟被抛出来的错误的类型要保持 一致

2 异常处理的使用

try语句正常的代码逻辑,当try语句异常时,则通过throw语句抛出异常,并退出try语句
,catch语句处理异常情况
? 1 当throw语句抛异常时,则会直接跳到catch语句处理
? 2 catch语句允许被重载,try语句后面可以多个catch语句,但是,顺序要跟thorw保持一样
? 3 不同类型的异常由不同的catch语句来捕获,顺序从上往下严格匹配,不会隐式转换
? 4 catch(...)语句,它相当于else语句,表示捕获前面所有没有被定义的异常,且只能放在所
? 有catch的末尾?

class Test
{

public:
    void printError()const
    {
        cout << " error -----" <<endl;
    }
};
void func()
{
   // throw 1;//抛出错误的类型为int,那么由int型的catch语句来处理
    //throw 1.0; //抛出错误的类型为double,那么由double型的catch语句来处理
    //throw 1.5f;//抛出错误的类型为float,那么由float型的catch语句来处理
    //throw "abc"; //由char const*类型的catch语句来捕获,字符串类型
    //throw string("hello");//由string类型的catch语句捕获
    //throw 类类型
    throw Test(); //throw new Test()

}
int main()
{
    try {
        func();
    } catch (int e) {
        cout << "error:" << e<<endl;
    }catch(double e){
         cout << "error:" << e<<endl;
    }catch(float e){
        cout << "error:" << e<<endl;
   }catch(char const* e){
        cout << "error:" << e<<endl;
   }catch(string e){
        cout << "error:" << e<<endl;
   }catch(const Test& e){

        e.printError();

    }catch(...){
        cout << "other type error"<<endl;
   }

    return 0;
}

3 C++中 异常类

/**
   *  @brief Base class for all library exceptions.
   *
   *  This is the base class for all exceptions thrown by the standard
   *  library, and by certain language expressions.  You are free to derive
   *  your own %exception classes, or use a different hierarchy, or to
   *  throw non-class data (e.g., fundamental types).
   */
  class exception
  {
  public:
    exception()  { }
    virtual ~exception() ;

    /** Returns a C-style character string describing the general cause
     *  of the current error.  */
    virtual const char what() const ;
  };

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:08:38  更:2021-09-14 13:10:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:53:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码