php写错命名空间 导致catch不到异常

写的微信回调接口出错了, 由于手里的调试工具(包括微信官方的开发者接口调试工具)不能把HTTP错误的详情dump出来,只会显示空白,所以打算在程序里加上try catch 捕获错误直接输出。重新测试,结果还是一片空白。找了半天,才发现太粗心,把catch的类名写错了……  

错误代码:

try {
    //code
} catch(Exception $e) {
    echo $e->getMessage(); 
}

 

因为用了命名空间,当前controller的namespace是 'app\controllers', catch的异常类实际上是'app\controllers\Exception',这个类是不存在的,但是php并不会报错。

使用命名空间时,异常基类应该写成'\Exception':

try {
    //code
} catch(\Exception $e) {
    echo $e->getMessage(); 
}

 

或者在文件起始声明:

<?php
use \Exception;

然后下文即可直接写成"Exception"。

posted @ 2016-11-23 15:11  Alexander.Gao  阅读(642)  评论(0编辑  收藏  举报