-
Notifications
You must be signed in to change notification settings - Fork 767
Closed
Labels
Milestone
Description
我查阅了关于 EventBus相关的源码, 在EventBusBase类,Run方法中,使用了 try catch,直接将 订阅端handle 抛出的异常给捕获了,但是并未重新抛出。 如下代码:
private void Run(IEventHandlerFactory factory, IEventHandler handler, Type eventType, IEventData eventData)
{
try
{
handler.Handle(eventData);
}
catch (Exception ex)
{
string msg = $"执行事件“{eventType.Name}”的处理器“{handler.GetType()}”时引发异常:{ex.Message}";
Logger.LogError(ex, msg);
}
}
但是在实际应用过程中,很多事件的处理,需要确保数据的一致性,如生产模块领料动作需要通知仓库模块做库存的更改,仓库模块订阅了领料通知,如果库存处理失败了,则需要保证生产领料动作都得回滚。
当然,也有些场景,订阅端抛出异常时,是不需要发布端监听。
还请考虑 EventBus功能,增加此项新功能~~ 谢谢