关于自定义异常抛出的两个问题?
来源: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加上引号,
}00 -
qq_大寒_2
提问者
2017-09-25
if(config('app_debug')==true){ return parent::render($e); }我想了想,程序检测的时候先去找自定义全局异常exceptionhandle的httpcode,而不是找去找客户端抛出的异常httpcode,不知道怎么改
00
相似问题