Imagick не будет ловить уведомления или предупреждения

Когда происходит Уведомление или Предупреждение, изображение не удается. Однако я не могу поймать уведомление или предупреждение.

<?php

$image = new Imagick($resource);

try {
$image->setImageCompressionQuality("Should be a Number Here not String");
}
catch ( ImagickException $e ) {
echo "This is a catch"; // should catch here but nope!
}
?>

Приведенный выше код должен перехватывать из-за строки, переданной, когда должно быть INT. изображение не удается но ловить не выполняет. Я все еще получаю это сообщение:

Примечание: использование неопределенной константы должно быть числом здесь, а не строкой — предполагается, что ‘d’ в /var/www/class.php в строке 15
Предупреждение: Imagick :: setimagecompressionquality () ожидает, что параметр 1 будет длинным, строка указана в /var/www/class.php в строке 15

Я также пытался (исключение $ e)

0

Решение

Как сказано выше, вы также должны проверить возвращаемое значение $ image-> setImageCompressionQuality и можете скрывать уведомления с помощью @.

Но вы также можете конвертировать уведомления в своем коде в исключения, как описано в эта почта. Это интересное решение, но я не рекомендую следовать ему. Проверка правильности лучше.

1

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

Потому что метод не выдает исключение в случае неправильного ввода. Вы должны сделать что-то вроде:

$result = @$image->setImageCompressionQuality("Should be a Number Here not String");
if (!$result) {
throw new \Exception('Operation has failed');
}
1

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