это способ предотвратить ошибку данных функции php gzuncompress () Серьезность: Предупреждение
так что если ошибка данных произошло из-за неправильного ввода данных
это просто вернется ложный или ноль
вместо Серьезность: Предупреждение следующим образом :
Обнаружена ошибка PHP
Серьезность: Предупреждение
Сообщение: gzuncompress (): ошибка данных
я не хочу отключать предупреждение для всех остальных, включив сообщение об ошибке
я пытался
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;
}
Однако, опять же, это глобальный обработчик, и здесь может быть несколько проблем:
Поэтому делайте это только в том случае, если вам известны все возможные последствия использования глобального обработчика ошибок.
Других решений пока нет …