美文网首页
C++|异常处理类

C++|异常处理类

作者: 绍重先 | 来源:发表于2017-12-15 14:47 被阅读0次

http://www.runoob.com/cplusplus/cpp-exceptions-handling.html

摘自网络

#include <iostream>
#include <string>
using namespace std;

#define TYPE_CLASS 0             //抛出自定义类类型对象的异常  
#define TYPE_INT 1                  //抛出整型的异常  
#define TYPE_ENUM 2             //抛出枚举的异常  
#define TYPE_FLOAT 3             //抛出float的异常  
#define TYPE_DOUBLE 4          //抛出double的异常  

typedef int TYPE;                    //异常的类型
enum Week {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};

//自定义的异常类
class MyException {
    public :
        MyException(string msg) {
            err_msg = msg;
        }
        void Reason() {
            cerr<<err_msg<<endl;
        }
        ~MyException() {}
    private:
        string err_msg;
};

//抛出异常的函数
//其中  throw (MyException,int,Week) 称之为异常规范,
//它告诉了编译器,该函数不会抛出其他类型的异常
//异常规范可以不写,默认为可以抛出任何类型的异常
//如果一个异常我们没有的捕获,会被系统调用terminate处理。
//如果一个异常类型,没有写入异常规范,我们使用catch无法捕获到,会被系统捕获,调用terminate
void KindsOfException(TYPE type) throw (MyException,int,Week,float,double) {
    switch(type) {
        case TYPE_CLASS:
            throw MyException("Exception! Type of Class"); //类
            break;
        case TYPE_INT:
            throw 2011;          //整型
            break;
        case TYPE_ENUM:
            throw Monday;     //枚举
            break;
        case TYPE_FLOAT:
            throw 1.23f;         //float
            break;
        case TYPE_DOUBLE:
            throw 1.23;          //double
            break;
        default:
            break;
    }
}

int main() {
    int type;
    cout<<"Input the type(0,1,2,3,4): ";
    cin>>type;
    try {
        KindsOfException(type);
    } catch(MyException e) { //如果我们使用了throw 异常规范,但是没把MyException写入throw列表,
        e.Reason();   //这里还是捕获不到MyException异常的,会被系统调用terminate处理。
    } catch (float f) {
        cerr<<"float"<<f<<endl;
    } catch (double d) {
        cerr<<"double"<<d<<endl;
    } catch(int i) {
        cerr<<"Exception! Type of Int -->"<<i<<endl;
    } catch(Week week) {
        cerr<<"Exception! Type of Enum -->"<<week<<endl;
    }
    //可以有更多的catch语句
    return 0;
}

相关文章

  • (五)C++中的异常处理与模板类

    C++中的异常处理与模板类 一、C++ 中的异常处理 1、异常处理 在C++ 中可以抛出任何类型的异常,根据抛出的...

  • C++|异常处理类

    http://www.runoob.com/cplusplus/cpp-exceptions-handling.h...

  • 你的c++团队还在禁用异常处理吗?

    关于c++的异常处理,网上有很多的争议,本文会介绍c++的异常处理的使用,以及我们应该使用异常处理吗,以及使用异常...

  • Android NDK开发之旅23--C++--异常处理

    异常处理 与Java类似,C++也有异常处理。 异常类型 C++中,异常的类型是任意的,如下: throw不同类型...

  • C++模板类&异常处理

    模板类类似JAVA中的泛型 //模板类 templateclass A{ public: A(T...

  • 异常( Exceptions)

    异常处理是C++的一项语言机制,用于在程序中处理异常事件。异常事件在C++中表示为异常对象。 优点: 异常允许上层...

  • NDK开发---C++学习(七):异常

    前言 C++的异常处理机制能够将异常检测与异常处理分离开来,当异常发生时,它能自动调用异常处理程序进行错误处理。把...

  • SpringMvc异常

    异常处理类的介绍 类层次结构 异常处理类详解 1.AnnotationMethodHandlerException...

  • spring统一异常处理

    异常处理类 添加BaseExceptionHandler类,然后根据具体异常类型处理 入参校验及异常处理 添加依赖...

  • iOS--基础1

    异常处理--Exception Handling Objective-C语言具有类似于Java和c++的异常处理...

网友评论

      本文标题:C++|异常处理类

      本文链接:https://www.haomeiwen.com/subject/jvcdwxtx.html