是他们防止php gzuncompress数据错误的一种方法严重性:警告

时间:2016-04-08 05:50:01

标签: php gz

是他们防止php gzuncompress()函数数据错误的方法严重程度:警告

因此,如果由于错误的数据输入而发生数据错误

它只会返回 false 或null

而不是严重性:警告,如下所示:

  

遇到PHP错误

     

严重性:警告

     

消息:gzuncompress():数据错误

我不想通过转错报告

来取消所有其他人的警告

我试过了

try {
        $result=  gzuncompress($crypt) ;
    } catch (Exception $ex) {
         $result=$ex;
    }

期待它不会显示和存储按摩。

这不是我想要的,因为我想抓住事件并迈出一步 但是现在我用@

解决了这个问题

1 个答案:

答案 0 :(得分:3)

正如您已经发现的那样,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;
}

然而,同样,这是一个全局处理程序,可能会遇到一些问题:

  • 在这些情况下可能不会出现异常的应用程序的其他部分的副作用
  • 您的应用程序可能已经提供了自己的错误处理程序,您将覆盖

因此,只有在您了解使用全局错误处理程序的全部含义和副作用时才能执行此操作。