我的应用程序图形引擎抛出这些异常。它们都被一个空的 catch 块消耗掉。早期,我发现了一个没有被困住的东西(我记得与笔加宽有关)。我用 try 和一个空的 catch 块包围它。看来这些异常对生成的绘图没有影响。我已经阅读了一些相关内容,但没有真正理解或深入了解它。
所以我的问题是:
- 如果可以安全食用,为什么还要扔掉它们呢?和
- 忽略它们安全吗?我担心每一项都会产生一些隐藏的影响。例如,我有从未发现的内存泄漏。
我见过 System.Drawing 抛出 OutOfMemoryExceptions,即使它没有内存不足。某些 GDI+ 函数显然只是返回一个愚蠢的错误代码。
IIRC,如果您尝试使用 LinearGradientBrush 填充宽度或高度为零的矩形,您将得到 OutOfMemoryException。可能还有其他条件,但这是我们遇到的主要条件。
在这种情况下,不需要 try/catch。只需添加一个if
声明您的绘图代码,如果宽度或高度为零,则不要填充矩形。
更新:根据评论这个答案 https://stackoverflow.com/questions/1108607/out-of-memory-exception-on-system-drawing-image-fromfile/1108619#1108619,如果您尝试加载损坏的图像文件,也可能会发生这种情况。为此,你别无选择,只能尝试/捕获。
您可能可以安全地从 GDI+ 捕获 OutOfMemoryExceptions,但请保持 try 块尽可能小。考虑记录异常,以便您可以分析日志并在可能的情况下添加防御代码。你不想掩盖realOutOfMemoryException,但您也不希望愚蠢的 GDI+ 错误代码导致您的应用程序崩溃。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)