怎么把throw的错误用json输出

0 0 php
技术zhai
技术zhai

声望值:168 0人

2018-08-08 15:20:57 提问

关注 0关注

收藏 0收藏, 1555浏览

public function run(){

    try{
        $this->_setRequestMethod();
        $this->_setupResource();
        $this->runcontroller();
    }catch(Exception $e){
        $this->_json(['error'=>$e->getMessage()],$e->getCode());
    }
}

public function _setRequestMethod(){

    $this->_requestMethod=$_SERVER['REQUEST_METHOD'];
    if(!in_array($this->_requestMethod,$this->_allowRequestMethods)){
        throw new\Exception("请求方法不被允许", 405);
    }
}

public function _json($array,$code=0){

    if($array === null && $code === 0){
        $code = 204;
    }
    if($array !== null && $code === 0){
        $code = 200;
    }
    header("HTTP/1.1 ".$code."  ".$this->_statusCodes[$code]);
    header("Content-Type=application/json;charset=UTF-8 ");
    if($array !== null){
        echo  json_encode($array,JSON_UNESCAPED_UNICODE);
    }
    exit();
}

执行run()的时候返回

Fatal error: Uncaught Exception: 请求方法不被允许 in /www/wwwroot/www.entercode.cn/api/Rest/restful.php:149 Stack trace: 龙8国际娱乐pt老虎机0 /www/wwwroot/www.entercode.cn/api/Rest/restful.php(69): Restrestful->runcontroller() 龙8国际娱乐pt老虎机1 /www/wwwroot/www.entercode.cn/api/index.php(20): Restrestful->run() 龙8国际娱乐pt老虎机2 {main} thrown in /www/wwwroot/www.entercode.cn/api/Rest/restful.php on line 149

但是我想将返回的错误结果
{error':'请求方法不被允许','405'}

是我哪里写错了吗?

请先 登录 后评论

1个回答

  • 半盛&梦夏149声望 2018-08-08 11:44

    class Etest { public function run() { try { $this->A(); $this->B(); $this->C(); } catch(\Exception $e) { $this->_json(['error' => $e->getMessage(),'code' => $e->getCode()]); } } public function A() { } public function B() { throw new \Exception("Not Found!",404); } public function C() { } public function _json($aArray) { header("HTTP/1.1 ".$aArray['code']." ".$aArray['error']); header("Content-Type:application/json;charset=utf-8;"); echo json_encode($aArray,JSON_UNESCAPED_UNICODE); exit; } } (new Etest)->run(); 可以参考下 这样写无报错 可以正常捕获Exception
    请先 登录 后评论

龙8国际娱乐pt老虎机

悬赏追问
10
  • 10
  • 20
  • 50
  • 100
  • 200
  • 输入数值
发布追问