【发布时间】:2020-08-31 12:54:46
【问题描述】:
我有一个在前端使用 JavaScript 并在后端使用 AJAX 与 PHP 通信的应用程序。
如果代码遇到我解释的错误,我确保将 HTTP 状态代码设置为 200 以外的值,并在 JavaScript 中适当地处理它,清晰地向用户显示发生错误。
但是,如果出现意外错误或某处由于某种原因出现严重错误,PHP 代码仍将返回 200 并回显错误而不是所需的输出。发生这种情况的一个简单例子是,如果 PHP 代码中存在语法错误(显然,在将其推送到生产环境之前,应该始终对代码进行彻底测试,因此用户永远不会遇到 PHP 语法错误,但让我们只是将此作为从服务器生成类似响应的错误示例。)
我正在记录错误以举例说明我的意思,但通常这个 PHP 解析错误 responseText 不会记录到控制台,只会出现红色的 Chrome 错误。
有没有办法捕获浏览器记录的这些错误并干净利落地响应用户,而不是让一切都中断并处于半加载状态?响应 PHP 代码中发生的错误但仍返回默认 200 响应的最佳方法是什么?
潜在的解决方案?
我在写这个问题时想到的一个初步想法是让每个 PHP 脚本的第一行将状态码设置为 500,然后如果我遇到预期的错误,请将状态码设置为适当的错误代码,并且仅在我成功回显脚本结果之前将状态代码设置回 200。这在大多数情况下都有效,但对我来说似乎更像是一种解决方法或黑客行为......这是一种合适的方式涵盖所有完全意外的错误?行业标准是什么?
【问题讨论】:
-
在处理响应的代码中使用
try/catch。 -
在发布此问题之前,我对 Stack Overflow 和其他网站进行了 很多 研究,但无法找到解决方案,因此如果有我忽略的内容,请注意这根本不是出于懒惰或嘲笑!让我知道是否有办法在否决之前改进我的问题,因为我很乐意!
-
@Barmar try-catch 在Javascript代码中,检查返回的内容是否是预期的格式,你的意思是?
-
@Guy 我将其解释为 PHP 中的意思。将整个 PHP 脚本放在 try catch 中,这样如果出现异常,您可以将响应代码设置为 500
-
我的意思是在 JS 中,在尝试解析应该返回的 JSON 时捕获错误。
标签: javascript php error-handling