捕获自定义异常C ++

时间:2013-12-08 17:26:35

标签: c++ exception

我有一个异常类:

#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*'

我不明白为什么没有发现异常。

1 个答案:

答案 0 :(得分:3)

代码throw Object1Exception(type);没有new;你将指针抛给异常,而不是异常本身。

BTW,正如polkadotcadaver所评论的那样,错误信息非常清楚,它告诉你抛出一些指针类型throwing an instance of 'tp::Object1Exception*'的实例....