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

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

错误代码:

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

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

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

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

或者在文件起始声明:

<?php
use Exception;

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

原文地址:https://www.cnblogs.com/haries/p/namespace-exception.html