当我传递空字符串或无效地址时,address_v4::from_string() 崩溃了
address_v4 address = address_v4::from_string("");
boost 版本:1_53
最佳答案
它实际上并没有崩溃。它只是抛出一个异常,如文档所示:
#include <boost/asio.hpp>
#include <iostream>
int main() {
try {
auto address = boost::asio::ip::address_v4::from_string("");
} catch(std::exception const& e) {
std::cout << e.what() << "\n";
}
}
打印“无效参数”。那是因为这个论点是无效的。 “”不是有效地址。
无一异常(exception)
您可以选择使用采用 error_code
的重载来避免抛出异常:
#include <boost/asio.hpp>
#include <iostream>
int main() {
boost::system::error_code ec;
auto address = boost::asio::ip::address_v4::from_string("", ec);
if (!ec)
std::cout << "Address: " << address << '\n';
else
std::cout << "Error: " << ec.message();
}
关于boost address_v4::from_string() 崩溃了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43750306/