簡體   English   中英

捕獲自定義異常C ++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM