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

is their a way to prevent php gzuncompress data error Severity: Warning

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

所以如果由于错误的数据输入 数据错误

它将只是 return 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;
}

但是,同样,这是一个全局处理程序,可能存在一些问题:

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

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