首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >boost::signals2 2和异常处理

boost::signals2 2和异常处理
EN

Stack Overflow用户
提问于 2013-06-07 21:33:12
回答 1查看 818关注 0票数 5

在boost::signals2 2中调用插槽时是否有某种方式覆盖特定时刻并执行一些操作(日志记录、调试、异常处理)?

我想在时隙调用时捕获异常,因为信号/时隙是代码中的执行路径在不同的软件组件之间交叉的地方,每个组件都是可选的/可以在运行时被禁用(如果它行为不当)。因此,当插槽调用抛出(可能来自外部库,可能只是std::bad_alloc)时,我希望得到通知--并知道哪个组件被发送到--这样我就可以杀死该组件。

我不知道如何在一个组合器中这样做,因为我无法访问那里的插槽或连接对象?所以我看不出有什么办法能得到任何信息。(更改每个插槽的返回类型是不可行的。)

有什么我错过的超简单的方法吗?

如果没有,我该怎么做呢?

子类,比如slot_call_iterator (在try/catch中包装调用)和connection_body_base (例如存储它属于哪个组件的信息),并让boost使用这些子类?(如何?)

或者子类signals2::slot<...>,给它提供构造函数中拥有组件的信息,并以某种方式重载操作符()(.)?(也不知道,所有的模板魔术似乎都要难得多。)

EN

回答 1

Stack Overflow用户

发布于 2018-06-21 09:10:45

总结评论意见:

伊戈尔R.

这样的功能似乎并不存在,但是您可以在trac中添加一个特性请求(甚至提供一个修补程序)。

来自整数(很好的昵称):

感谢您的评论。是的,我以为它不存在,只是想知道是否有一种方法可以子类或覆盖公开导出的boost类来创建我自己的类。用boost代码盲目地做这件事可能会让人感到害怕,因为我害怕做一些可能会破坏或误用内部的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16993316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档