如何在服务器中抛出异常并在客户端c ++中捕获它?

时间:2016-12-30 12:35:32

标签: c++

我想知道我是否可以从服务器发送异常并在客户端接收它。 这是我的服务器:

void MyServer::on_new_message(int identifier, string message) {
    if(/*some condition for message*/)
      throw BadIO();
}

这是我客户的主要内容:

int main(){
try{
          cin>>c;
          socket.send(c);
          socket.receive();
        }
            catch(BadIO& exp)
        {
          cout<<exp.what()<<endl;
        }
    return 0;
    }

运行此代码后,我得到:

  

在抛出'BadIO'实例后终止调用   中止(核心倾销)

提前致谢:)

1 个答案:

答案 0 :(得分:3)

有可能。

异常需要在服务器中序列化,就像在进程之间传递的任何其他对象一样。有一个特殊的异常消息,以便socket.receive可以检测到它,反序列化异常并将其抛出到客户端。