我正在尝试使用TImage.Picture.LoadFromFile()
加载损坏的图片(图片文件大小为0kb),但try..except
未捕获 JPEG错误#42 :
try
Image1.Picture.LoadFromFile('myfile.jpg'); // myfile.jpg is broken image
except
on e: exception do
ShowMessage('Fail to load');
end;
消息显示“JPEG错误#42”,而不是“无法加载”。
答案 0 :(得分:3)
发生的事情是,当图像控件自行绘制时,错误是异步触发的。直到那时才处理实际图像数据,并且图像在下一个绘制周期之前不会自行绘制。在事件处理程序返回后会发生这种情况。
如果您希望能够同步处理错误,则需要立即强制处理无效的图像数据。这是实现这一目标的一种相当丑陋的方式:
prop1.Invoke(model)
请注意,现代版本的Delphi已经解决了这个问题,您问题中的代码将按照您的希望和期望行事。