在观察者模式中调用监听者方法时需要加在try...catch块中进行

来源:互联网 发布:ios11 蜂窝数据 编辑:程序博客网 时间:2024/05/22 04:35

通常,我们使用观察者模式实现事件监听时,都需要在被监听对象中调用监听者的方法,伪代码描述如下:

List<T> listenerList; // 监听者列表

for(Listener listener:listernerList) {

listener.do();

}


如果仅仅是这样调用,会存在一个问题:

若在调用监听者方法时出现运行时异常,则可能导致后续监听者无法得到调用通知。

因此,在调用监听者方法时,应该在try...catch块中进行,这样不论监听者方法是否抛出异常,都不受影响。

伪代码描述如下:

List<T> listenerList; // 监听者列表

for(Listener listener:listernerList) {

try {

listener.do();

}catch(Throwable t) {}

}


细节就是魔鬼。。。


原创粉丝点击