异常捕获
在异常捕获中不要使用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());
}