标准程序库所发生的异常

来源:互联网 发布:知乎 swisse 编辑:程序博客网 时间:2024/05/01 08:44

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) {}

   };

}