当异常发生时,会寻找处理的catch块;事件处理机制,当事件源发生事件,会寻找处理者,事件处理机制采用了观察者模式,那么异常处理机制也应该是观察者模式的思想吗? 欢迎大家讨论

解决方案 »

  1.   

    观察者模式:Observer模式定义对象间的一对多的依赖关系,当一个对象(被观察者)的状态发生改变时, 所有依赖于它的对象(观察者)都得到通知并被自动更新。
    单纯的java异常处理机制是没有设计模式而言的,异常处理是一个笼统的概念。
      

  2.   

    java在捕捉异常的时候在 方法的调用栈中进行寻找,一旦找到抛出异常的方法就进行回朔,直到找到相应的处理方法为止。我觉得有些像,不过实际实现应该不会是观察者模式
      

  3.   

    个人感觉try catch只是一种语法   和if else 差不多意思
      

  4.   

    在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。java的异常处理机制,由于在抛异常的时候并不能像观察者模式那样通知具体的观察者来处理异常,因此异常处理机制应该没有用到观察者模式的思想。
      

  5.   

    如果是这样的话,具体哪个异常对应哪个方法是怎么实现的?try与catch之间有个一对一的映射关系就足够能实现了
      

  6.   

    如果是观察者模式的话要满足几个要件
    n个观察者和1个被观察者之间注册观察与被观察关系(try和catch的组合可以看成是注册了观察关系),所观察事件(事件的定义是在未来可能会发生)
    这里貌似是有事件的概念(异常的发生),但是观察者和被观察者是哪个呢?勉强可以认为try的manager是被观察者,catch的manager是观察者,try中异常发生后由try的manager负责调用了catch manager的异常应对代码(也就是所谓的通知)但实际上存不存在这些假设的对象呢?