从函数c ++返回NULL字符串

Ash*_*ban 4 c++ string

string receiveFromServer();

此函数返回从某个服务器接收的字符串.如果一路上出现错误(包括协议),我想返回一个NULL字符串.但是,这在c ++中不起作用(与java不同).我试过了:

string response = receiveFromServer();
if (response==NULL) {
    cerr << "error recive response\n";
}
Run Code Online (Sandbox Code Playgroud)

但它不合法.由于空字符串也是合法的返回,我可以返回什么表明错误?

谢谢!

Bjö*_*lex 9

您可以抛出异常以指示错误.

try {
    std::string response = receiveFromServer();
} catch(std::runtime_error & e) {
    std::cerr << e.what();
}
Run Code Online (Sandbox Code Playgroud)

然后你需要一个throw std::runtime_error("Error receive response")地方receiveFromServer().

通常认为良好的做法(尽管有些人可能不同意)来创建自己的异常类,这些异常类派生自std::runtime_error使客户能够专门捕获您的错误.


BЈо*_*вић 5

你可以抛出一个异常(更好的方法),或者返回boost :: optional <string>,但是你必须检查返回值是否有效(这实际上更糟).