伙计们。我正在使用ajax通过php加载一堆数据。有时异常会未被捕获。这会生成一些 javascript 无法解析的错误消息(因为它需要 json)。这会使页面崩溃,这不太酷。所以我正在构建一个自定义异常处理程序。基本上它应该只是 json_encode Exception 对象。但 json 只适用于 stdClass 类型的对象。所以这是实际的问题:
如何将异常对象转换为 stdClass,以便我可以对其进行 json_encode?我已经尝试了所有我能想到的天真的东西,比如
(stdClass) $ex
和 (Object) ((Array) $ex)
是的,我知道一开始就不应该捕获异常,但它更像是一个开发功能。它使调试不再那么痛苦;-)
谢谢!
最佳答案
- PHP 不支持对象转换。
在这种情况下使用异常处理程序是一个可怕的想法,特别是当您所要做的就是:
try { // Current code here, including other try-catch blocks } catch (Exception $e) { // handle uncaught exception }
当发生错误时,您应该正确设置响应。将响应代码设置为 500(内部服务器错误),以便 JavaScript 可以轻松处理该问题。
Exception
对象仅提供可能有用的getMessage()
和getCode()
方法,因此可以生成响应正文像这样:$responseBody = json_encode(array( 'message' => $e->getMessage(), 'code' => $e->getCode() ));
关于php - 如何将异常对象转换为stdClass?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4585092/