异常捕获
在异常捕获中不要使用think\Controller类的 error、success 和 redirect 方法,因为上述三个方法会抛出HttpResponseException异常,从而影响正常的异常捕获,例如:
try{
Db::name('user')->find();
$this->success('执行成功!');
}catch(\Exception $e){
$this->error('执行错误');
}
//此时 $this->success() 不会正常执行。
//应该改成
try{
Db::name('user')->find();
}catch(\Exception $e){
$this->error('执行错误');
}
$this->success('执行成功!');
如果想要在try catch中自定义抛出异常,需要实例化Think下的Exception,主动抛出异常,catch捕获。
use think\Exception;
try{
if($name!='admin'){
throw new Exception('name 不正确!');
}
//后续代码不会运行,直接到catch
}catch(\Exception $e){
$this->error($e->getMessage());
}
注意:在try中,使用throw抛出异常后,下边不会正常运行,直接被catch捕获。
参考链接:
https://www.kancloud.cn/manual/thinkphp5/126075
版权声明:本文为G925010178原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。