所以我有一个问题:
class Exception{
private : string message;
public :
Exception();
Exception(string str);
string what();
};
class Something{
public : Something(int m) throw(Exception);
....}
并在cpp文件中:
Exception::Exception()
{
message="cant divide by 0";
}
Exception::Exception(string str)
{
message = str;
}
Exception:string what()
{
return message;
}
然后我尝试在一些构造函数中使用它
Something::Something(int m) throw(Exception)
{
if (m==0)
{
throw Exception();
}
};
并在主
...
catch(Exception obj){
cout<<obj.what();
}
它显示&#34;异常&#34;没有命名类型和&#39; obj&#39;没有宣布,我想知道为什么。
答案 0 :(得分:0)
异常类可能不完整。
它看起来并不像Exception :: what()被正确定义。
...试
string Exception::what()
{
return message;
}
另外,正如其他人所提到的,在c ++中你不必定义函数在java中抛出的内容。有关详细信息,请参阅此问题...
Throw keyword in function's signature
Something::Something(int m)
{
if (m==0)
{
throw Exception();
}
};
通常我会捕获对抛出的异常的引用,除非它是原始类型。这样可以避免复制异常。
...试
...
catch(Exception& obj) {
cout << obj.what();
}