C++ 重写异常(throw)以及一些基础异常测试

38 篇文章 0 订阅
#include <stdexcept>
#include <iostream>
#include <string>
#include <exception>

class bad_dj:public std::exception
{
std::string _M_msg;
public:
        bad_dj(const std::string& arg) noexcept: std::exception(),_M_msg(arg)
        {
        }

        virtual const char* what() const noexcept{
                return _M_msg.data();
        }
};

void testBad_dj(){
        throw bad_dj(std::string("any way"));
}

void testStd_throw(){
        throw std::logic_error("logic_error error,please!");
        //throw std::invalid_argument("invalid_argument error,please!");
        //throw std::length_error("length_error error,please!");
        //throw std::out_of_range("out_of_range error,please!");
        //throw std::overflow_error("overflow error,please!");
        //throw std::underflow_error("undefflow error,please!");
        //throw std::runtime_error("runtime_error error,please!");
}

/* compile:g++ -std=c++11 throw.cpp */
int main(){

        try {
                testBad_dj();
        } catch (bad_dj &e) {
                std::cout << "bad_dj processed :" << e.what() << std::endl;
        }

        testBad_dj();
        testStd_throw();

}

testBad_dj:测试自定义异常
testStd_throw:测试标准异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值