C++中不存在的新異常,可以通過(guò)重寫和繼承異常類功能來(lái)定義。
下面來(lái)看看看用戶定義的異常的簡(jiǎn)單例子,其中使用std::exception
類來(lái)定義異常。
#include <iostream>
#include <exception>
using namespace std;
class MyException : public exception{
public:
const char * what() const throw()
{
return "Attempted to divide by zero!\n";
}
};
int main()
{
try
{
int x, y;
cout << "Enter the two numbers : \n";
cin >> x >> y;
if (y == 0)
{
MyException z;
throw z;
}
else
{
cout << "x / y = " << x/y << endl;
}
}
catch(exception& e)
{
cout << e.what();
}
return 0;
}
上面代碼執(zhí)行輸出結(jié)果如下 -
Enter the two numbers :
10
2
x / y = 5
上面代碼執(zhí)行一個(gè)除0
異常,輸出結(jié)果如下 -
Enter the two numbers :
10
0
Attempted to divide by zero!
注意:在上面的例子中,
what()
是一個(gè)由exception
類提供的公共方法。 它用于返回異常的原因。