来自try-catch中的json_decode的PHP致命错误

时间:2016-11-08 09:57:09

标签: php json

以下代码抛出了这个异常:

$return = json_decode($result);
  

致命错误:无法访问以' \ 0'开头的属性在   file.php在线   36

我已经在这里阅读了php文档和一些问题,所以我尝试了这段代码:

try{
   $return = json_decode($result);
  }
  catch(Exception $e)
  {

   $json_error_code = json_last_error();
   echo $json_error_code . ",";
   $err.= 'JSON parse error';
   switch ($json_error_code) {
    case JSON_ERROR_NONE:
     $err = "NONE";
     break;
    case JSON_ERROR_DEPTH:
     $err.= ' - Maximum stack depth exceeded';
     break;
    case JSON_ERROR_STATE_MISMATCH:
     $err.= ' - Underflow or the modes mismatch';
     break;
    case JSON_ERROR_CTRL_CHAR:
     $err.= ' - Unexpected control character found';
     break;
    case JSON_ERROR_SYNTAX:
     $err.= ' - Syntax error, malformed JSON';
     break;
    case JSON_ERROR_UTF8:
     $err.= ' - Malformed UTF-8 characters, possibly incorrectly encoded';
     break;
    default:
     $err.= ' - Unknown error';
     break;
   }
   echo $err;
  }

它会在try-catch块中抛出相同的致命错误!

有人可以帮我解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:-1)

首先删除try catch块json_decode不会抛出异常。 其次创建$ err更改行

$err.= 'JSON parse error';

$err= 'JSON parse error';

您尝试将字符串连接到不存在的变量。

从默认情况下删除中断:它没用。

执行此操作后,它应该可以正常工作。

注意:如果您希望错误的行为与异常相同,则需要使用own error handler

如果json_encode给出致命错误,请尝试重新安装json扩展程序并查看https://bugs.php.net/bug.php?id=68546