#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:测试标准异常