gz — это способ предотвратить ошибку данных php gzuncompress. Серьезность: предупреждение

это способ предотвратить ошибку данных функции php gzuncompress () Серьезность: Предупреждение

так что если ошибка данных произошло из-за неправильного ввода данных

это просто вернется ложный или ноль

вместо Серьезность: Предупреждение следующим образом :

Обнаружена ошибка PHP

Серьезность: Предупреждение

Сообщение: gzuncompress (): ошибка данных

я не хочу отключать предупреждение для всех остальных, включив сообщение об ошибке

я пытался

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

ожидая, что он не будет показывать и хранить массаж.

Это не совсем то, что я ищу, так как хочу поймать событие и сделать шаг
но любой, как сейчас у меня есть решить, используя @

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;
}

Однако, опять же, это глобальный обработчик, и здесь может быть несколько проблем:

  • побочные эффекты для других частей приложений, которые могут не ожидать исключения в этих случаях
  • ваше приложение может уже иметь свой собственный обработчик ошибок, который вы бы переопределили

Поэтому делайте это только в том случае, если вам известны все возможные последствия использования глобального обработчика ошибок.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]