Imagick不会收到通知或警告


Imagick will not catch Notices or Warnings

当出现通知或警告时,图像将失败。但是,我无法收到通知或警告。

<?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!
    }
?>

上面的代码应该catch,因为传递的字符串应该是INT。映像失败,但catch不执行。我仍然收到这样的消息:

注意:未定义常量的使用应该是数字,这里不是字符串-假设第15行/var/www/class.php中的"d"警告: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');
}