“异常处理机制可以把每一件事当做事务考虑,还可以把异常看成一种内建的恢复系统。如果程序某部分失败,异常将恢复到某个已知稳定的点上,而这个点就是程序的上下文环境,而try块里面的代码就保存catch所要知道的程序上下文信息。”红色字部分不明白phptry catch

解决方案 »

  1.   

    就是说catch(err)捕获到的异常信息可以通过try{}中提供的方法来解决
      

  2.   

    搜了下..该书的副标题是 "系统归纳和深刻解读PHP开发中的编程思想、底层原理..."其实吧, 你看,太深刻了也不好....举个例子吧...$x=new X();  try{
      // $x 状态A正常
      $x->findGirl();     // throw GirlNotFound
      // $x 状态B激动
      $x->doSomething();  // throw TooFast | NotWork
      // $x 状态C极不稳定
      $x->releaseSomething();  // throw Stuck | NotSatified
      // $x 状态A恢复正常  //下面进入catch部分,如果某些情况发生, 我们必须确保$x恢复到状态A, 否则....相信大家都有"深刻"的体会
    }catch(GirlNotFound e){
      $x->DIY();  //必须帮助$x恢复状态A
    }catch(TooFast e){
      // 不需要做啥....$x已经到状态A了....
    }catch(NotWork e){
      $x->RunAway();  // $x未进入状态B, 不需要做啥....不过...
    }catch(NotSatified e){
      $x->RunAway();  // $x已经到状态A了....不过....
    }catch(Stuck e){
      $x->cut();     // $x保持在了状态C无法回滚.....必须采取极端措施强行退出....
    }
    回到原文: "而try块里面的代码就保存catch所要知道的程序上下文信息。"就是说catch里采取的行为, 是根据try里的代码运行的情况而定的 ( exception类型及抛出位置 ) ....... 的确有一点点类似于"事务"的失败回滚, 不过不一定是回滚, 也有可能是再次尝试,强制退出...等等...............................
    ..............................回头一看,我真的很无聊.....其实还是看1楼的答案好了...............大家过年好........
      

  3.   

    而try块里面的代码就保存catch所要知道的程序上下文信息 ????
    我想,这是这是被机器直译的,没有人能看懂的单词堆积异常处理(又称为错误处理)功能提供了处理程序运行时出现的任何意外或异常情况的方法。异常处理使用 try、catch 和 finally 关键字来尝试可能未成功的操作,处理失败,以及在事后清理资源。
    有两种基本模型
    一种称为"终止模型"(它是Java与C++所支持的模型).在这种模型中,将假设错误非常关键,将以致于程序无法返回到异常发生的地方继续执行.一旦异常被抛出,就表明错误已无法挽回,也不能回来继续执行.
    另一种称为"恢复模型".意思是异常处理程序的工作是修正错误,然后重新尝试调动出问题的方法,并认为第二次能成功
    目前 php 值支持第一种