Imagick不会捕获通知或警告

时间:2014-10-28 14:03:06

标签: php exception-handling imagemagick try-catch 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。 图片失败但是catch不会执行。我仍然收到这条消息:

注意:使用未定义的常量应为数字此处不是字符串 - 在第15行的/var/www/class.php中假定为“d” 警告:Imagick :: setimagecompressionquality()期望参数1为long,第15行/var/www/class.php中给出的字符串

我也试过(Exception $ e)

2 个答案:

答案 0 :(得分:1)

因为该方法在无效输入的情况下不会抛出异常。你应该做点什么:

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

答案 1 :(得分:1)

如上所述,您还应该检查$ image-&gt; setImageCompressionQuality的返回值,并使用@隐藏通知。

但您也可以将代码中的通知转换为this post中描述的异常。这是有趣的解决方案,但我不建议遵循它。检查正确性更好。