$this->success不能正确返回信息

  • Post author:
  • Post category:其他




异常捕获

在异常捕获中不要使用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 版权协议,转载请附上原文出处链接和本声明。