发生通知或警告时,图像失败。但是,我无法收到通知或警告。
<?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)
答案 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中描述的异常。这是有趣的解决方案,但我不建议遵循它。检查正确性更好。