异常C ++在错误消息中显示变量

时间:2014-03-12 10:48:41

标签: c++ qt exception pointers

在我的Qt项目中,我以这种方式处理多个异常:

myExceptions.h:

#ifndef MYEXCEPTIONS_H
#define MYEXCEPTIONS_H

#include <iostream>
#include <exception>
using namespace std;

class myExceptions : public runtime_error
{

public:
    myExceptions(const char *msg ) : runtime_error(msg){};
    ~myExceptions() throw(){};

};

#endif // MYEXCEPTIONS_H

我以这种方式在我的代码中调用异常:

abc.cpp

if (!MyClass::aMethod(a, b) )
{
  throw myExceptions("Error message to show");

 }

并在我的main.cpp中抓住它:

 try {
        MyClass2 myClass2(param);
    } catch (myExceptions &e) {
       QMessageBox::critical(&window, "title", e.what());
    }

在此之前没问题,但是当我想在错误消息中显示变量tmpName的名称时会发生。

 std::string tmpName; 

 else{
     throw myExceptions("Unrecognized member : " + &tmpName);
 }

当我这样做时,我收到以下错误:

C2110:'+' : cannot add two pointers.

有人可以帮帮我吗?提前谢谢!

2 个答案:

答案 0 :(得分:0)

删除&throw myExceptions("Unrecognized member : " + tmpName);

这样,你可以添加一个const char *和一个std :: string,而不是尝试添加两个const char *。

答案 1 :(得分:0)

问题出在以下行

throw myExceptions("Unrecognized member : " + &tmpName); 

您正在尝试将const char *添加到tmpName字符串的地址。 你应该做

 tmpName = "Unrecognized member : " + tmpName;
 throw myExceptions(tmpName.c_str());

由于myException类将const char *作为参数