Когда происходит Уведомление или Предупреждение, изображение не удается. Однако я не могу поймать уведомление или предупреждение.
<?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)
Как сказано выше, вы также должны проверить возвращаемое значение $ image-> setImageCompressionQuality и можете скрывать уведомления с помощью @.
Но вы также можете конвертировать уведомления в своем коде в исключения, как описано в эта почта. Это интересное решение, но я не рекомендую следовать ему. Проверка правильности лучше.
Потому что метод не выдает исключение в случае неправильного ввода. Вы должны сделать что-то вроде:
$result = @$image->setImageCompressionQuality("Should be a Number Here not String");
if (!$result) {
throw new \Exception('Operation has failed');
}