关于自定义异常抛出的两个问题?

来源:5-6 不可预知的内部异常api数据输出解决方案(二)

qq_大寒_2

2017-09-25

public function save()
{
   $data=input('post.');
   if($data['rm']!==1){
     throw new  CsApiException('提交的数据不合法o',403);
   }
   return show(1,'ok',input('post.'),201);
}

这里异常,逻辑为什么,我在postman改了rm参数等于1的状态还是会抛出错误状态为403的捕获异常报错?

同时

class CsApiExceptionHandle extends Handle {   
public $httpCode=500;    
public function render(\Exception $e){        
if(config('app_debug')==true)
{            
return parent::render($e);        
}            
if($e instanceof CsApiException){                
$this->httpCode=$e->httpCode;            
}        
return show(0,$e->getMessage(),[],$this->httpCode);    
}}

同时增加app_debug判断,让服务端人员更容易看懂报错信息,但是状态码就变成500了,而不是之前自定义的403,

老师这个逻辑是不是有问题了?

if(config('app_debug')==true){
   return parent::render($e);

}

重新去获取内置的Exception里面的实例化后的httpcode.然后这个Exception这个类又是被我们自定义Exceptionhandle类重新覆盖的,也就是最后捕获的是自定义Exceptionhandle的httpcode


表述不是很清楚,这个返回给客户端状态码难道不是403吗?

写回答

2回答

qq_大寒_2

提问者

2017-09-25

第一个问题已经解决了


postman中参数发送过来是以字符串的形式发送过来的,

if($data['rm']!=='1'){
  throw new  CsApiException('提交的数据不合法o',403);

要给数值1加上引号,
}

0
0

qq_大寒_2

提问者

2017-09-25

if(config('app_debug')==true){
    return parent::render($e);
}

我想了想,程序检测的时候先去找自定义全局异常exceptionhandle的httpcode,而不是找去找客户端抛出的异常httpcode,不知道怎么改


0
0

PHP企业级实战,完成一套高可用高安全的App后台系统

轻轻松松开发一个安全可靠高效的多终端APP后台系统,可用于毕设

1263 学习 · 475 问题

查看课程