- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
通常是not recommended捕获一般异常,例如 Exception
或 Throwable
,因为您承担了处理您不知道如何处理的问题(例如内存不足错误)的负担。然而,在“稳健”的观察者模式实现中(一个监听器的错误不应阻止其他监听器被通知),事件发布者可能被任何人观察到,这意味着事件监听器可能会抛出事件发布者不可能知道的异常(这就是解耦监听器和发布者的全部意义)。
在这种情况下,捕获Throwable
是否有意义,这样无论事件处理发生什么错误,其他监听器仍会得到通知?还是捕获这样一个通用类仍然是个坏主意吗?
像这样
for (EventHandler listener : listeners) {
try {
listener.sendEvent(event);
} catch (Throwable exc) {
log.warn("Listener " + listener + " failed to process event");
//maybe remove faulty listener...
}
}
我可以看到另一个更重要的隔离监听器失败的方法是使用线程池,这样如果一个监听器抛出异常,只有池中的线程会丢失,但其他监听器的通知仍然会发生
最佳答案
我建议捕获 Throwable
,因为我发现您的论点很有说服力,“事件发布者可能会被任何人观察到,这意味着事件监听器可能会抛出事件发布者不可能知道的异常”。
备选方案是不捕获任何东西,这将是一场噩梦,或者您建议的线程池,我认为当您捕获 Throwable
时,这是不必要的。
关于java - 我应该在 EventDispatcher/Observable 中捕获 Exception、Throwable 还是其他,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30766717/
从 RN 版本 0.63.2 升级到 0.65.0-rc.3 后无法构建 iOS 应用程序。我收到此错误: In file included from /Users/.../ReactNativePr
有什么方法可以获取EventDispatcher的已注册监听器列表吗? 我知道EventDispatcher具有hasEventListener方法来告诉您是否注册了任何监听器,但是是否有一种简单的方
一个简单的问题..我想知道你们什么时候在你们的类里面扩展了 EventDispatcher。在我看来,只要我们有导入事件包,我们就可以毫无问题地分发事件......我看到有时人们在他们的类(class
我经常从头开始用 JS 实现自己的 EventDispatcher 类。我想在浏览器的某处有一些针对 DOM 元素的实现,但 EventDispatchers 甚至对其他与 DOM 完全无关的东西也很
我遇到了一些奇怪的事情,但也许其他人以前遇到过。 我有一个基类,它不扩展任何东西。让我们称之为... public class FooBar { //... } 但我想绑定(bind)它暴露的
这看起来非常简单,但我对 JavaScript 有点陌生并且很困难。文档给出了这个例子: // Adding events to a custom object var Car = function
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我用的是cocos2d-x 3.0 RC1,有以下问题。据我所知,cocos2d-x 有一个单一的(集中的)事件分发器,它被实现为一个单例,这样我就可以从任何地方向任何地方发送事件。现在在最终版本中它
我希望在我的应用程序中实现观察者模式(不是 php,这就是为什么不使用 Symfony 的组件)。 我发现很奇怪,尽管组件没有使用类来传播或监听事件,因为这将允许使用继承来监听整个事件树。 我看不到使
我正在将一个 ActionScript 应用程序移植到 JavaScript,并且正在尝试完善我的 EventDispatcher 实现。 我最近遇到的一个问题是,我附加的回调没有被正确的 this
我尝试用数据实现一个简单的类型安全事件调度程序,即除了事件之外还可以传递任何数据。我发现了很多类型安全的事件调度程序问题或任何其他示例,但似乎没有人能解决我的问题。这是我到目前为止得到的: publi
我想通过使某些类可观察来促进我的 PHP 代码中的松散耦合。 Symfony EventDispatcher component看起来很有希望,SPL 也是如此 SplObserver/SplSubj
使用react-native run-ios启动应用程序时,它在模拟器上显示错误无法找到EventDispatcher的模块 最佳答案 停止远程 JS 调试,然后重新加载应用 它会给您相应的错误消息,
我有一个 JAVA6 GUI 处理数据导入到我们的数据库。我已经实现了一个工作 JProgressBar。我知道对 GUI 所做的更改必须通过事件分派(dispatch)线程来完成——我认为我没有这样
Bloomberglp.Blpapi.Session 有一个如下所示的构造函数: public Session(SessionOptions, Bloomberglp.Blpapi.EventHand
来自 Symfony2 的 EventDispatcher 组件文档: The Symfony2 EventDispatcher component implements the Mediator p
我想知道我是否应该使用 Symfony EventDispatcher Component用于在我的 DDD 应用程序中处理领域事件。 对我来说,当一个经过良好测试的组件可用时,从头开始重新实现一个事
我想知道在 EntityRepository 类中注入(inject) EventDispatcher 的最佳实践是什么。 最佳答案 首先,使用 global 是一个 very bad practic
通常是not recommended捕获一般异常,例如 Exception 或 Throwable,因为您承担了处理您不知道如何处理的问题(例如内存不足错误)的负担。然而,在“稳健”的观察者模式实现中
当尝试安装 Rackspace 包时(composer require rackspace/php-opencloud),出现以下错误找不到“Symfony\Component\EventDispat
我是一名优秀的程序员,十分优秀!