标准程序库所发生的异常

c++标准程序库异常派生自logic_error

1.invalid_argument 无效的参数

2.length_error 超越了最大长度

3.out_of_range 参数不再指定范围内

4.domain_error

 

标准程序库的I/O异常 ios_base::failure

派生自rutime_error异常

1.range_error 内部计算发生区间错误

2.overflow_error 算术运算发生上溢位

3.underflow_error 算术运算发生下溢位

 

异常类别的头文件

基类 exception 和 bad_exception定义于<exception>

bad_alloc定义于<new>

bad_cast 和 bad_typeid 定义于<typeinfo>

ios_base::failure定义于<ios>

其他异常都定义于<stdexcept>

 

打印异常

try{

}

catch(const std::exception& err){

std:cerr << err.what() << std::endl;

}

 

抛出标准异常

std::string s;

throw std::out_of_range(s);

 

自己定义异常

namespace std{

   calss MyProblem : public std::exception{

      public:

              MyProblem() {...}

              virtual const char* what() const throw() {...}

   };

}

void f(){

   throw MyProblem(...);

}

 

实现标准库异常

namespace std{

   class MyRangeProblem : public std::out_of_range{

      public:

              MyRangeProblem(const std:string& whatstring)

                                     :out_of_range(whatstring) {}

   };

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值