自定义异常
#include <iostream>
using namespace std;
class base
{
public:
base()
{
id = NULL;
}
virtual void printError()
{
cout << "base异常" << endl;
}
char* id;
~base(){}
};
class A:public base
{
public:
A()
{
}
A(const char* str)
{
id = new char[strlen(str)+1];
strcpy(id, str);
}
virtual void printError()
{
cout << "A发生异常" << endl;
}
~A()
{
delete[] id;
}
};
class B :public base
{
public:
B()
{
}
B(const char* str)
{
id = new char[strlen(str)+1];
strcpy(id, str);
}
virtual void printError()
{
cout << "B发生异常" << endl;
}
~B()
{
delete[] id;
}
};
int main()
{
A a("AAA");
B b("BBB");
try
{
if (strcmp(a.id, b.id)==0) //相等
{
cout << "a.id:\t" << a.id << endl;
cout << "b.id:\t" << b.id << endl;
throw A();//栈匿名对象
}
else
{
cout << "a.id:\t" << a.id << endl;
cout << "b.id:\t" << b.id << endl;
throw B();//栈匿名对象
}
}
catch (base& bb)
{
bb.printError();
}
}
结果:
自定义异常2:
#include <iostream>
using namespace std;
class base:public exception
{
public:
base(const char* str1)
{
str = new char[strlen(str1) + 1];
strcpy(str, str1);
}
virtual const char* what()const
{
return str;
}
char* str;
~base(){}
};
class A
{
public:
char* id;
A(const char* str1)
{
id = new char[strlen(str1)+1];
strcpy(id, str1);
}
~A()
{
delete[] id;
}
};
int main()
{
try
{
A a1("qwer");
A a2("qwer");
if (strcmp(a1.id, a2.id) != 0)
{
cout << "a1.id:\t" << a1.id << endl;
cout << "a2.id:\t" << a2.id << endl;
}
else
throw base("a1和a2相等");
}
catch (base& b)
{
cout << b.what() << endl;
}
}
结果: