我正在尝试从jpeg文件创建一个图像(但是在打开它的副本进行转换时它有一些Adobe RGB,Gimp警告)。
原始文件位于http://learnintouch.com/Bernadotte.jpg
我的源代码:
不会显示die语句。
try {
$image = @imagecreatefromjpeg($file);
die("$file");
} catch (Exception $e) {
reportError("Could not use imagecreatefromjpeg() to create an image from the $file file.");
exit();
}
或者:
仅显示打印A.
try {
print("A");
$copy = imagecreatefrompng($filename);
print("B");
} catch (Exception $e) {
print("C");
reportError("Could not use imagecreatefrompng() to create an image from the $filename file. " . $e->getMessage());
exit();
}
捕获物不会运行。
执行在imagecreatefromjpeg方法内部死亡。
我使用的是PHP 5.6.16,GD是:
GD Support enabled
GD Version bundled (2.1.0 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.4.9
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 8
PNG Support enabled
libPNG Version 1.2.49
WBMP Support enabled
XBM Support enabled
答案 0 :(得分:0)
这是你的问题:
@imagecreatefromjpeg($file);
@
是suppress any errors的“错误控制运算符”。来自文档:
目前,“@”错误控制运营商前缀甚至会禁用 错误报告将终止脚本的严重错误 执行。除此之外,这意味着如果你使用“@”来 抑制某个功能的错误,并且它不可用 或者错误输入,脚本将在那里死亡 指示为什么。
我怀疑是会引发异常,但由于@
已将错误级别设置为0,因此reportError
函数未按预期运行。 (如果没有看到这个函数,我可能无法确认这一点,也许您对日志记录情况了解得更多。)无论如何,如果您打算处理@
中的错误,您应该删除try/catch
:只有在运算符合适的时候才需要在调出可以处理错误的框架或代码时抑制错误。