问题标签 [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.
c++ - 我可以复制构造带有错误信息的 boost::exception 吗?
考虑以下使用 boost 异常类的代码:
(实际上,这段代码更复杂。例如,exception_impl
仅派生于std::exception
后者还不是 . 的直接或间接基类Exc
。但这只会分散我对问题的注意力,所以我跳过了它。)
鉴于此,我现在可以派生自己的异常类:
并使用它们:
然而,事实证明,产生的异常没有test_int_info
对象。所以我更改了exception_impl
构造函数以提供一些诊断信息:
这确实表明,当我将Exc
对象复制到exception_impl
基类对象中时,信息会丢失:
IIRC,异常对象必须根据标准是可复制的,并且忽略可能的优化,复制抛出表达式的结果。所以 boost 的异常必须是可复制的,并且它们当然不会在此过程中丢失信息。我必须在这里遗漏一些相当明显的东西。
我究竟做错了什么?
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 中,所有实现都封装在一个类中。
由于这种变化,我的代码正在破坏...... :(
您能否建议我,如何解决上述错误?
谢谢
boost - 是否可以从 boost::exception_ptr 获取 boost::exception 对象?
是否可以从 boost::exception_ptr 获取 boost::exception 对象?如果是,如何(在 boost 版本 1.5x 中)?
c++ - 如何遍历 boost::exception 中的所有 error_info?
在 boost::exception(或 std::exception)的捕获站点,我想在不知道类型的情况下迭代异常的所有 error_info 元素。我需要提取所有名称-值对。
我想这应该是可能的,因为 boost::diagnostic_information 函数可以做到这一点,但我想避免重复所有这些代码。
这可以做到吗?怎么做?
c++ - 为什么 boost::diagnostic_information 崩溃以及如何修复它?
我尝试使用 boost::exception 但遇到了麻烦。我写了以下代码:
但它在函数中崩溃了:boost::diagnostic_information(*this)。它崩溃的原因:堆栈溢出
为什么会发生以及如何以正确的方式使用 boost::exception?
升压版 - 1.66
MSVS2017 版本 - 15.5.5
c++ - 如何正确使用 BOOST_THROW_EXCEPTION?
我尝试使用提升异常和下降。有问题代码:
在这种情况下, exception_description 的值具有最后一个字符串 - “ std::exception::what: Unknown exception ”。这是意想不到的价值。如果我将 BOOST_THROW_EXCEPTION 更改为通常的抛出 - exception_description 值的最后一个字符串看起来是预期的 - “ std::exception::what: hello exception ”
那么如何正确使用 BOOST_THROW_EXCEPTION 呢?
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
c++ - 不输出抛出位置(Boost.Exception)
使用 Boost.Exception 引发异常时遇到问题。8444950934950830985903859380958309850938905839859080985098940689089689028
这个程序的结果是:
但是如果将此 my_exception 更改为 base_exception
为什么BOOST_THROW_EXCEPTION不输出异常的来源和原因?如何修复此代码?
c++ - 捕获异常并重新抛出作为提升异常
我正在尝试将 Boost 异常用于可以附加到异常的附加元数据,因为它们会在调用堆栈中冒泡。但是我遇到但不知道如何处理的一个用例是:如何捕获 std::exception 并用 boost 异常包装它并抛出/重新抛出包装的异常?例如:
有什么好的使用Boost.Exception来学习的开源项目?
谢谢!
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块?
谢谢!