0

捕获错误“GDI+ 中发生一般错误”后,我遇到了一个奇怪的错误。

当我尝试打开一个 excel 文件时,提示:

Workbook workbook = new Workbook();
workbook.LoadFromFile(FileName);

但是在捕获此异常几分钟后,我的应用程序崩溃(NullReferenceException)而没有指定错误的位置!

知道当我尝试扫描 excel 文件时会发生这种情况,但它适用于其他 excel 文件!

我无法找到带有消息“对象引用未设置为对象的实例”的异常被抛出的位置。Visual Studio 显示找不到它!

在此处输入图像描述

因此,即使我尝试在我的代码中处理异常,我也将一无所有。

有人可以在这个话题上帮助我吗?

4

1 回答 1

0

TL:DR; 版本是:

  • 抛出“GDI+ 中的通用错误”异常时出现了问题,您没有在异常处理程序中修复(可能是因为您无法这样做)。
  • 一段时间后,由于较早的事情,出现了其他问题。

长版

您只能处理您知道如何处理的异常。

要处理异常,而不是仅仅清理局部变量并重新抛出它,您需要充分了解以下内容:

  • 究竟出了什么问题
  • 所有的后果是什么
  • 究竟需要做什么才能把一切——所有的后果——正确

如果您不知道所有这些事情,那么您将无法正确处理异常。

在您的情况下,您发现了一个异常(GDI+ 中的通用错误)。但是,您不知道是什么原因造成的,也不知道如何确保您已经处理了它可能造成的所有不利后果。

一旦出现了你不完全理解的异常,应用程序的内部数据结构可能不再一致。例如,可能会丢失原本假定存在的东西。

如果是这种情况,预计以后会出现更多问题,就像您的情况一样。

因此,您不应该抓住它,或者至少应该重新扔掉它。现在是该进程退出的时候了,并传呼系统管理员以找出问题所在。或者至少,重新开始。

于 2013-09-27T13:59:07.643 回答