boost address_v4::from_string() 崩溃了

标签 boost crash boost-asio

当我传递空字符串或无效地址时,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 的重载来避免抛出异常:

Live On Coliru

#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/

相关文章:

boost Windows Phone 8?

iphone - 如何在实用程序类型的应用程序中查找错误?

c++ - UDP 连接总是成功

iOS 崩溃 : Terminating app due to uncaught exception reason: UIPopoverPresentationController should have a non-nil sourceView

c++ - 一起使用 cppcoro 和 ASIO 的 co_spawn

c++ - 是否可以创建和发送零长度缓冲区

c++ - 为什么 nvcc 无法使用 boost::spirit 编译 CUDA 文件?

c++ - Boost二进制序列化问题

c++ - Fedora 中 boost 的使用

java - 如何使用 ssh 和 key 授权 CRaSH