关于自定义异常抛出的两个问题?
来源: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
相似问题