误导人的异常信息

今天在调试代码时, 遇到这样一个异常:

内存不足。
异常详细信息: System.OutOfMemoryException: 内存不足。
源错误:  System.Drawing.Image myimg=System.Drawing.Image.FromFile(file.FullName);

我一开始还认为哪儿没有释放内存, 查了半天,也没找出原因, 然后查了一下MSDN,  原来是打开了不是图像的文件而引发的异常:

MSDN:如果文件没有有效的图像格式,或者如果 GDI+ 不支持文件的像素格式,则此方法将引发 OutOfMemoryException 异常。

这样的异常信息真容易让人误解。
posted @ 2004-11-01 23:41 dudu 阅读(2028) 评论(6)  编辑 收藏

  回复  引用  查看    
#1楼 2004-11-02 00:38 | unruledboy(灵感之源)      
这是有可能的:譬如碰巧获取的文件对应位置要获取Height/Width,而碰巧是很大的数值,超出了正常范围,譬如9999999*99999999,估计是不可能有的,抛出这个异常是合理的。
  回复  引用  查看    
#2楼 2004-11-02 01:19 | 小牛哥      
对于0字节的图片也是有可能的
以前碰到过这种问题,不过没有深究
当时处理了一下图片文件大小为0的图片文件
内存不足的问题就没有了……


  回复  引用  查看    
#3楼 2004-11-16 17:50 | sumtec      
呵呵,估计前几天北邮有学生过来看到你的这个Post了,结果那天我过去跟他们交流的时候,给我演示了一个错误,坚持认为是一个Bug(那位可爱的MM还愤愤不平的说了.NET CF的不少坏话,嘿嘿,我也说过不少)。结果后来发现是Resource的名称没有写对,所以返回的资源流是空的,结果用这个流来构造一个Bitmap的时候,引发了NullReferencedException。
  回复  引用    
#4楼 2005-06-17 10:53 | aaaaa [未注册用户]
我用BITMAP读取一个20MB的JPEG图片,每次都发一生System.OutOfMemoryException: 内存不足,这怎么办呀。
  回复  引用    
#5楼 2005-08-10 15:16 | 新手 [未注册用户]
那请问该如何处理
  回复  引用  查看    
#6楼 2006-07-03 17:41 | 随风流月      
@新手
那真的是你内存不足了。

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: