《PHP核心技术与最佳实践》P37中间有一句不明白? “异常处理机制可以把每一件事当做事务考虑,还可以把异常看成一种内建的恢复系统。如果程序某部分失败,异常将恢复到某个已知稳定的点上,而这个点就是程序的上下文环境,而try块里面的代码就保存catch所要知道的程序上下文信息。”红色字部分不明白phptry catch 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 就是说catch(err)捕获到的异常信息可以通过try{}中提供的方法来解决 搜了下..该书的副标题是 "系统归纳和深刻解读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楼的答案好了...............大家过年好........ 而try块里面的代码就保存catch所要知道的程序上下文信息 ????我想,这是这是被机器直译的,没有人能看懂的单词堆积异常处理(又称为错误处理)功能提供了处理程序运行时出现的任何意外或异常情况的方法。异常处理使用 try、catch 和 finally 关键字来尝试可能未成功的操作,处理失败,以及在事后清理资源。有两种基本模型一种称为"终止模型"(它是Java与C++所支持的模型).在这种模型中,将假设错误非常关键,将以致于程序无法返回到异常发生的地方继续执行.一旦异常被抛出,就表明错误已无法挽回,也不能回来继续执行.另一种称为"恢复模型".意思是异常处理程序的工作是修正错误,然后重新尝试调动出问题的方法,并认为第二次能成功目前 php 值支持第一种 select的搜索规则。PHP和SQl这么写无效,请问问题在哪? 怎么让php直接输出excel文件 不弹确认保存框 PHP pdo 事务无法回滚 OOP编程真慢 PHP代码很乱,有没有格式化工具? 加载新页面时操作cookie.... 关于在本机安装phpmyadmin,远程连接数据库,本机是否一定要有apache服务? 高分求助:这个怎么错了 求一段长文章100个字自动断开并且以指定符号连接的代码,高手帮忙了,我怎么写都是乱码 PHP socket怎么模仿微信群聊 关于input表单的问题 如何让值在原来的基础上通过数量调节以X2的倍数递增 firephp怎么断点调试啊
// $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楼的答案好了...............大家过年好........
我想,这是这是被机器直译的,没有人能看懂的单词堆积异常处理(又称为错误处理)功能提供了处理程序运行时出现的任何意外或异常情况的方法。异常处理使用 try、catch 和 finally 关键字来尝试可能未成功的操作,处理失败,以及在事后清理资源。
有两种基本模型
一种称为"终止模型"(它是Java与C++所支持的模型).在这种模型中,将假设错误非常关键,将以致于程序无法返回到异常发生的地方继续执行.一旦异常被抛出,就表明错误已无法挽回,也不能回来继续执行.
另一种称为"恢复模型".意思是异常处理程序的工作是修正错误,然后重新尝试调动出问题的方法,并认为第二次能成功
目前 php 值支持第一种