@ThinkPHP 关于ReflectionException无法正常处理

浏览:3002 发布日期:2014/05/12 分类:求助交流
因为APP::exec()中直接通过try{}catch(ReflectionException $e){}捕获控制器执行过程中所有的ReflectionException异常,并调用__call方法,导致一个问题:

自己项目中用到反射的时候,很多方法默认是会抛出异常的,比如:
ReflectionClass::implementsInterface($interface)方法,如果$interface不存在的话,内部会直接抛出一个异常,这时候期待的应该是程序中断,但是由于App类的处理机制,导致程序无法中断,而是直接输出视图。

测试方法:
随便在一个控制器方法里用一行代码即可测试:
throw new \ReflectionException("class does not exists");
会发现这行代码下的流程全部被终止,但是还是输出了视图。

我觉得,直接捕获ReflectionException去调用__call方法是否不太合理?应当通过if...else...来处理比较合适吧?
@ThinkPHP
最佳答案
评论( 相关
后面还有条评论,点击查看>>