【发布时间】:2016-10-03 09:24:56
【问题描述】:
我对我目前开发的网络应用程序有点卡住了。我决定更谨慎地将异常与 try/catch-blocks 一起使用。
尽管如此;我使用 PHP7 在本地开发,当我刚刚将应用程序上传到 PHP5 服务器 时,所有这些异常都不再被捕获。相反,脚本执行会因致命错误而停止。我读过一些关于 PHP7 异常的重大变化,但我发现的所有信息都非常模糊。
脚本停止不是什么大问题,但在这种情况下捕获和“修改”错误非常重要,因为脚本是通过 AJAX 调用运行的,并且必须返回 JSON 格式的错误消息。
主文件:
try {
if (!$this->validateNonce($this->postParams['upload-nonce']))
throw new Exception('Upload failed because nonce could not be verified.');
new FloImage(
$this->postParams['basename'],
true,
$this->fileParams['uploadfile']
);
} catch (Throwable $e) {
echo json_encode(array('error' => $e->getMessage()));
die();
}
FloImage() 会检查一些信息(名称、文件大小等),并在发生错误时以这种方式抛出异常:
throw new Exception(_('My error message.'));
如果能提供有关如何使 try-catch-block 与 PHP5 一起工作的帮助,我们将不胜感激!提前谢谢你...
【问题讨论】:
-
您遇到的致命错误是什么?
-
我总是得到我抛出的错误。致命错误:我的消息。
-
Throwable是 PHP7 中的基本接口 -> docs 我认为你无法理解它,因为Exception没有实现 PHP5 中的接口 -
谢谢!我必须使用什么才能让它与 PHP5 和 PHP7 一起工作? “例外 $e”?
-
Exception $e应该可以工作,因为大多数异常都来自Exception。当你抛出Exception时,它无论如何都可以在 PHP7 和 PHP5 中工作。
标签: php exception error-handling