#include <iostream>
#include <string.h>
/**
*
*/
using namespace std;
class Myexception{
public:
Myexception(char* str){
error=new char[strlen(str)+1];
strcpy(error,str);
}
~ Myexception(){
if(error!=NULL){
delete[] error;
}
}
//拷贝构造与=重载
Myexception(const Myexception& ex){
this->error=new char[strlen(ex.error)+1];
strcpy(this->error,ex.error);
}
//重载=
Myexception& operator=(const Myexception& ex ){
if(this->error!=NULL){
delete[] this->error;
this->error=NULL;//防止野指针出现
}
this->error=new char[strlen(this->error)+1];
strcpy(this->error,ex.error);
}
public:
void what(){
cout<<error<<endl;
}
public:
char *error;
};
void func()
{
throw 1;
}
void func02()
{
throw "excption";
}
//抛出类对象异常
void func03()
{
throw Myexception("my current exception"); //匿名对象
}
/******************************************/
void test01()
{
try{
func();
}
catch(int e){
cout<<"interater exception"<<endl;
}
// try{
// func02();
// }
// catch(char* str){
// cout<<"字符串异常"<<endl;
// }
try{
func03();
}
catch(Myexception obj){
obj.what();
}
}
int main(int argc, char *argv[])
{
test01();
return 0;
}