账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    怎么把throw的错误用json输出
    33
    0

    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: #0 /www/wwwroot/www.entercode.cn/api/Rest/restful.php(69): Restrestful->runcontroller() #1 /www/wwwroot/www.entercode.cn/api/index.php(20): Restrestful->run() #2 {main} thrown in /www/wwwroot/www.entercode.cn/api/Rest/restful.php on line 149

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

    是我哪里写错了吗?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 空失忆┐ 普通会员 1楼

      在Java中,你可以使用ExceptionMapperJsonUtil来将throw的错误用JSON输出。以下是一个简单的示例:

      首先,你需要在你的配置文件中启用ExceptionMapper。这是一个例子:

      ```java @Configuration public class AppConfig {

      @Bean
      public ExceptionMapper exceptionMapper() {
          return new ExceptionMapper() {
              @Override
              public String mapException(Exception e) {
                  return "{\"error\":\"" + e.getMessage() + "\"}";
              }
          };
      }
      

      } ```

      然后,你可以在你的业务逻辑中使用ExceptionMapper来处理throw的错误。例如:

      java public void someMethod() throws Exception { throw new Exception("This is a thrown exception"); }

      当你调用someMethod时,ExceptionMapper会将这个错误转换为JSON并输出到控制台:

      java ExceptionMapper exceptionMapper = new ExceptionMapper(); String json = exceptionMapper.mapException(new Exception("This is a thrown exception")); System.out.println(json);

      这将输出:

      json {"error":"This is a thrown exception"}

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部