我有以下代码从网址加载图片。如果网址不存在,则应加载占位符。
public BitmapImage Image
{
get
{
if (m_image == null)
{
try
{
BitmapImage image = new BitmapImage();
image.BeginInit();
image.UriSource = new Uri(m_photoPath);
image.DecodePixelHeight = s_imagePixelHeight;
image.EndInit();
m_image = image;
}
catch (FileNotFoundException)
{
BitmapImage image = new BitmapImage();
image.BeginInit();
image.UriSource = new Uri(c_placeholderImagePath);
image.DecodePixelHeight = s_imagePixelHeight;
image.DecodePixelWidth = s_imagePixelWidth;
image.EndInit();
m_image = image;
}
}
return m_image;
}
}
我遇到了最奇怪的错误 - 当m_photoPath
是一个在任何浏览器中导致404的网址时,不会抛出任何异常。我已经尝试使用HttpWebRequest
来检查文件是否存在,但是每当我调用[HttpWebRequest instance].GetResponse()
时,都会有一个非常非常长的超时(可能是无限的 - 我没有等到找出来)。所以HttpWebRequest
不是一个选择。有什么想法吗?
答案 0 :(得分:2)
如果图像无法下载,则会触发BitmapImage的DownloadFailed事件。没有异常被抛出。您可以随时连接事件,但在调用EndInit之前执行它是务实的。
这可能无法真正处理异常,因为有些事情可能会放弃在未来的任意点下载图像 - 没有任何地方可以放置try / catch块。