[英]Catch custom exception C++
我有一個異常類:
#ifndef OBJECTEXCEPTION_H_
#define OBJECTEXCEPTION_H_
class ObjectException: public std::logic_error
{
public:
ObjectException (const std::string& raison)
:std::logic_error(raison){};
};
class Object1Exception: public ObjectException
{
public:
Object1Exception (const std::string& raison)
: ObjectException(raison){};
};
#endif
我有一個拋出此異常的方法:
void Object1::myMethod(int type) {
if (type == 0) {
throw new Object1Exception(type);
}
...
}
現在,我使用這種方法:
try{
obj1->myMethod(0);
}
catch(Object1Exception& error){
}
但是我有這個錯誤
terminate called after throwing an instance of 'tp::Object1Exception*'
我不明白為什么未捕獲到異常。
代碼throw Object1Exception(type);
沒有new
; 您將拋出一個指向異常的指針 ,而不是異常本身。
順便說一句,正如polkadotcadaver所評論的那樣 ,錯誤消息非常清楚,它告訴您關於拋出某種指針類型throwing an instance of 'tp::Object1Exception*'
...。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.