gpt4 book ai didi

c# - System.Drawing Out of Memory异常

转载 作者:太空狗 更新时间:2023-10-29 19:50:26 24 4
gpt4 key购买 nike

我的应用程序图形引擎抛出这些异常。它们都被一个空的 catch block 消耗掉了。在早期,我发现了一个没有被困住的(我记得与笔扩大有关)。我用 try 和一个空的 catch block 包围了它。这些异常似乎对制作的图纸没有影响。我在没有真正理解或深入了解的情况下阅读了一些内容。

所以我的问题是:

  1. 如果可以安全食用,为什么还要扔掉它们?和
  2. 忽略它们安全吗?我担心每一个都有一些隐藏的效果。例如,我有从未发现的内存泄漏。

最佳答案

我见过 System.Drawing 抛出 OutOfMemoryExceptions,即使它没有内存不足也是如此。某些 GDI+ 函数显然只是返回一个愚蠢的错误代码。

IIRC,如果您尝试使用 LinearGradientBrush 填充宽度或高度为零的矩形,则会出现 OutOfMemoryException。可能还有其他条件,但这是我们遇到的主要条件。

在那种情况下,就不需要 try/catch 了。只需在绘图代码中添加一个 if 语句,如果宽度或高度为零,则不填充矩形。

更新:根据this answer上的评论,如果您尝试加载损坏的图像文件,也会发生这种情况。为此,您别无选择,只能执行 try/catch。

从 GDI+ 捕获 OutOfMemoryExceptions 可能是安全的,但要使 try block 尽可能小。考虑记录异常,以便您可以分析日志并在可能的情况下添加防御代码。您不想屏蔽真正的 OutOfMemoryException,但您也不希望愚蠢的 GDI+ 错误代码使您的应用程序崩溃。

关于c# - System.Drawing Out of Memory异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6506089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com