gpt4 book ai didi

php - PHP5.6 服务器上未捕获异常

转载 作者:行者123 更新时间:2023-12-03 07:53:47 25 4
gpt4 key购买 nike

我对我目前开发的网络应用程序有点卡住了。我决定将异常与 try/catch block 一起使用 更刻意。

尽管如此;我开发了本地使用 PHP7 ,当我刚刚将应用程序上传到 PHP5服务器 ,所有这些异常都不再被捕获。相反,脚本执行会因 fatal error 而停止。我已经阅读了一些关于 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中引入的一个接口(interface)。来自 manual它指出:

Throwable is the base interface for any object that can be thrown via a throw statement in PHP 7, including Error and Exception.



因此,如果你想在 PHP5 中使用你的代码,你必须捕获 Exception本身。 IE。
try {
throw new Exception('Some exception');
}
catch (\Exception $e) // use the backslash to comply with namespaces
{
echo($e->getMessage());
die();
}

只要抛出的异常源自 Exception,这将起作用。 . IE。
class SpecialException extends Exception {}

try {
throw new SpecialException('Some exception');
}
catch (\Exception $e) // use the backslash to comply with namespaces
{
echo($e->getMessage());
die();
}

关于php - PHP5.6 服务器上未捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39828335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com