即使输出错误,也要使PHP始终使用JSON进行响应

时间:2015-12-23 12:52:16

标签: php json error-handling

场景:

Ajax调用PHP脚本。总是需要JSON格式的答案。

问题:

在某些情况下(异常,错误等),不会返回Json,而是返回简单的纯文本。

问题:

如何强制PHP始终返回JSON,无论如何?但是没有关闭所有错误和警告?

我想的是:

  • 的set_error_han dler
  • set_exception_handler

如何强制解析错误(如解析错误)以输出JSON格式?

1 个答案:

答案 0 :(得分:1)

对于PHP 5.x
set_exception_handle抓住例外情况 set_error_handler发现错误

无法捕获解析错误。来自docs

  

使用用户定义的函数无法处理以下错误类型:E_ERROR,E_PARSE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING和大多数E_STRICT

对于PHP 7.x

所有错误都是可捕获的,因此您可以将您的php脚本包装在

try {
    // your app here
} catch (Throwable $t) {
    // convert it to json
}

对于任何php版本

无法处理直接从网络服务器发送的回复,例如404504等等。

您可以做的最好的事情是检查javascript中的响应代码,并仅处理200个响应,您可以在php脚本中完美控制这些响应。