【问题标题】:When to catch boost::bad_lexical_cast何时捕获 boost::bad_lexical_cast
【发布时间】:2010-07-08 10:55:16
【问题描述】:

documentation on the boost site for lexical cast 指出,从数字类型转换为字符串类型时,转换可能会抛出 bad_lexical_cast。显然,在这种情况下,我们应该始终处理这个异常,如果它被抛出。

我的问题是,反过来呢,从数字类型到字符串呢?这在操作上风险较小,但它没有在 boost 文档中说明此操作是否可以抛出 bad_lexical_cast,尽管给出的示例省略了 catch 块。

log_message("Error " + boost::lexical_cast<std::string>(yoko) + ": " + strerror(yoko));

从数字类型转换为字符串时,我是否应该捕获潜在异常?

【问题讨论】:

    标签: c++ boost exception-handling casting


    【解决方案1】:

    据我所知,不存在无法在字符串中表达内置数字类型的情况。

    【讨论】:

    • 然而,转换可能会失败 - 字符串的内存分配可能会抛出。
    • 那不会被捕获并作为 boost::bad_lexical_cast 重新抛出?
    • 它将作为 std::bad_alloc 抛出。 Boost 可能会在内部捕获它并作为其他东西重新抛出,但我怀疑 bad_lexical_cast。
    • 没抓到,我刚查了一下。
    • 并不是暗示它确实/应该捕获它,更重要的是,如果它捕获了,它永远不会作为 bad_lexical_cast 重新抛出。
    猜你喜欢
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多