问题标签 [boost-exception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
642 浏览

c++ - 我可以复制构造带有错误信息的 boost::exception 吗?

考虑以下使用 boost 异常类的代码:

(实际上,这段代码更复杂。例如,exception_impl仅派生于std::exception后者还不是 . 的直接或间接基类Exc。但这只会分散我对问题的注意力,所以我跳过了它。)


鉴于此,我现在可以派生自己的异常类:

并使用它们:


然而,事实证明,产生的异常没有test_int_info对象。所以我更改了exception_impl构造函数以提供一些诊断信息:

这确实表明,当我将Exc对象复制到exception_impl基类对象中时,信息会丢失:


IIRC,异常对象必须根据标准是可复制的,并且忽略可能的优化,复制抛出表达式的结果。所以 boost 的异常必须是可复制的,并且它们当然不会在此过程中丢失信息。我必须在这里遗漏一些相当明显的东西。

我究竟做错了什么?

0 投票
1 回答
144 浏览

c++ - Boost:1.46.1 和 1.58.0 之间的 API 变化?

我的应用程序在 Boost 版本 1.46.1 上。我想将我的应用程序移植到 Boost 版本 1.58.0。但是我面临一些问题。

我注意到 boost 1.58boost::exception_ptr与 1.46.1 有不同的实现。在 1.46.1 中,boost::exception_ptr被实现为共享指针:

在 1.58 中,所有实现都封装在一个类中。

由于这种变化,我的代码正在破坏...... :(




您能否建议我,如何解决上述错误?

谢谢

0 投票
0 回答
45 浏览

boost - 是否可以从 boost::exception_ptr 获取 boost::exception 对象?

是否可以从 boost::exception_ptr 获取 boost::exception 对象?如果是,如何(在 boost 版本 1.5x 中)?

0 投票
1 回答
73 浏览

c++ - 如何遍历 boost::exception 中的所有 error_info?

在 boost::exception(或 std::exception)的捕获站点,我想在不知道类型的情况下迭代异常的所有 error_info 元素。我需要提取所有名称-值对。

我想这应该是可能的,因为 boost::diagnostic_information 函数可以做到这一点,但我想避免重复所有这些代码。

这可以做到吗?怎么做?

0 投票
1 回答
83 浏览

c++ - 为什么 boost::diagnostic_information 崩溃以及如何修复它?

我尝试使用 boost::exception 但遇到了麻烦。我写了以下代码:

但它在函数中崩溃了:boost::diagnostic_information(*this)。它崩溃的原因:堆栈溢出

为什么会发生以及如何以正确的方式使用 boost::exception?

升压版 - 1.66

MSVS2017 版本 - 15.5.5

0 投票
1 回答
1000 浏览

c++ - 如何正确使用 BOOST_THROW_EXCEPTION?

我尝试使用提升异常和下降。有问题代码:

在这种情况下, exception_description 的值具有最后一个字符串 - “ std::exception::what: Unknown exception ”。这是意想不到的价值。如果我将 BOOST_THROW_EXCEPTION 更改为通常的抛出 - exception_description 值的最后一个字符串看起来是预期的 - “ std::exception::what: hello exception

那么如何正确使用 BOOST_THROW_EXCEPTION 呢?

0 投票
1 回答
199 浏览

boost - 将数据写入客户端时提升协程服务器崩溃

我基于 boost coroutine echo server example 制作了我的服务器,只是接收和写回一些数据。它在向客户端写入数据时崩溃,更奇怪的是,它只在使用多核时崩溃。

这是服务器,它读取 4 个字节并在 1 秒内写回“OK”作为超时:

请注意,4 字节数据包1 秒超时只是为了说明问题,真实服务器使用大数据包可能会在网络状况不佳时导致超时。为了模拟这一点,客户端每秒写入 1 个字节以触发服务器上的读取超时。

客户端:

问题一

为什么这条线会导致崩溃?

boost::asio::async_write(socket_, boost::asio::buffer(string(reason)), yield[ecw]);

问题 2

为什么服务器在 1 cpu 上运行时不会崩溃:io_context.run();
并在多个 CPU 上使用thread_group?

我的环境:Win10-64bit、boost-1.71.0-64bit、VisualStudio-2017-Community

0 投票
0 回答
276 浏览

c++ - 不输出抛出位置(Boost.Exception)

使用 Boost.Exception 引发异常时遇到问题。8444950934950830985903859380958309850938905839859080985098940689089689028

这个程序的结果是:

但是如果将此 my_exception 更改为 base_exception

为什么BOOST_THROW_EXCEPTION不输出异常的来源和原因?如何修复此代码?

0 投票
0 回答
53 浏览

c++ - 捕获异常并重新抛出作为提升异常

我正在尝试将 Boost 异常用于可以附加到异常的附加元数据,因为它们会在调用堆栈中冒泡。但是我遇到但不知道如何处理的一个用例是:如何捕获 std::exception 并用 boost 异常包装它并抛出/重新抛出包装的异常?例如:

有什么好的使用Boost.Exception来学习的开源项目?

谢谢!

0 投票
1 回答
77 浏览

c++ - 提升多线程异常

我有一个程序main.cpp

当我运行这个文件时

g++ main.cpp -lboost_system -lboost_thread -g -o main && ./main

表明

我知道它在第 33 行崩溃,函数中的注释行

环境:Boost 版本为 1.54

我的问题是:程序是multiple-read/single-write,如果 MutexClass 已经运行析构函数,在不同的线程中运行 doSomeThing 时如何避免这种情况。
并且只能添加try/catch块?
谢谢!