string receiveFromServer();
此函数返回从某个服务器收到的字符串。如果一路上出现错误(包括协议),我想返回一个NULL字符串。但是,这在c ++中不起作用(与java不同)。 我试过了:
string response = receiveFromServer();
if (response==NULL) {
cerr << "error recive response\n";
}
但它不合法。 由于空字符串也是合法的返回,我可以返回什么表明错误?
谢谢你!答案 0 :(得分:9)
您可以抛出异常以指示错误。
try {
std::string response = receiveFromServer();
} catch(std::runtime_error & e) {
std::cerr << e.what();
}
然后你需要throw std::runtime_error("Error receive response")
中的某个receiveFromServer()
。
通常认为好的做法(尽管有些人可能不同意)来创建自己的异常类,这些异常类派生自std::runtime_error
,以使客户能够专门捕获您的错误。
答案 1 :(得分:5)
你可以抛出一个异常(更好的方法),或者返回boost :: optional&lt;字符串&gt;,但是你必须检查返回值是否有效(这实际上更糟)。
答案 2 :(得分:1)
NULL在使用指针时只有意义。在java中,字符串是指针,所以你可以这样做。
在C ++中,如果返回std :: string,它必须存在。所以你有一些可能性
答案 3 :(得分:1)
也许你应该尝试处理with exceptions
try
{
string response = receiveFromServer();
}
catch (...)
{
cerr << "error recive response\n";
}
答案 4 :(得分:0)
如果要返回空字符串,也可以使用该函数
string::empty()
来测试它是否为空