好多同学说yii2捕获不到异常,看了大部分问题,都是因为对catch的理解不正确造成的,例如问题:

//a文件: 
function a() {
  throw new \yii\web\HttpException('我是数据库异常');
}

//b文件:
use yii\db\Exception;

try{
  a();
}
catch(Exception $e)
{
  echo "捕获到异常了";
}

然而并没有输出捕获到异常了,因为catchException实际指的是捕获yii\db\Exception抛出的异常,不能捕获HttpException抛出的异常。

yii中所有异常都是继承于Exception,所以有两种改写方法。

方法一:

catch(\yii\web\HttpException $e)

方法二:

catch(\Exception $e)

陶留军
166 声望1 粉丝

从业十年,略知前端