是他们防止php gzuncompress()函数数据错误的一种方法严重性:警告
因此如果由于错误的数据输入而发生数据错误
它只会返回false或null
而不是严重性:警告如下:
A PHP Error was encountered
Severity: Warning
Message: gzuncompress(): data error
我不想通过打开错误报告关闭所有其他警告
我努力了
try {
$result= gzuncompress($crypt) ;
} catch (Exception $ex) {
$result=$ex;
}
期望它不会显示和存储按摩.
这不是我想要的,因为我想赶上活动并迈出一步
但是现在如何使用@解决
解决方法:
正如您已经发现的那样,gzuncompress不会引发异常.因此您可以执行以下操作:
$result = @gzuncompress($data);
if ($result === false) {
// do something related to error here
}
但是,如果您确实想在此类警告期间引发异常,请按照所需的代码片段,可以使用以下方式定义全局错误处理程序:
set_error_handler(
function($errno, $errstr, $errfile, $errline) {
if ($errno == E_WARNING && $errstr == 'gzuncompress(): data error') {
throw new MyGzException($errstr);
}
}
);
然后在您的代码中您会说:
try {
$result = @gzuncompress($data);
} catch (MyGzException $e) {
$result = $e;
}
但是,这又是一个全局处理程序,并且可能存在一些问题:
>对应用程序其他部分的副作用,在这些情况下可能不会期望例外
>您的应用程序可能已经提供了自己的错误处理程序,您将对其进行覆盖
因此,仅当您知道使用全局错误处理程序的全部含义和副作用时,才执行此操作.
标签:gz,php
来源: https://codeday.me/bug/20191118/2031150.html