string receiveFromServer();
此函数返回从某个服务器接收的字符串.如果一路上出现错误(包括协议),我想返回一个NULL字符串.但是,这在c ++中不起作用(与java不同).我试过了:
string response = receiveFromServer();
if (response==NULL) {
cerr << "error recive response\n";
}
Run Code Online (Sandbox Code Playgroud)
但它不合法.由于空字符串也是合法的返回,我可以返回什么表明错误?
谢谢!
您可以抛出异常以指示错误.
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使客户能够专门捕获您的错误.