C# 捕获“后出现NullReferenceException;GDI+;中发生一般性错误”;工作簿错误

C# 捕获“后出现NullReferenceException;GDI+;中发生一般性错误”;工作簿错误,c#,excel,C#,Excel,在捕获错误“GDI+中发生一般错误”后,我出现了一个奇怪的错误 当我试图打开excel文件时,请按说明: Workbook workbook = new Workbook(); workbook.LoadFromFile(FileName); 但是在捕捉到此异常后几分钟,我的应用程序将崩溃(NullReferenceException),而不指定错误的位置 知道当我尝试扫描excel文件时会发生这种情况,但它对其他excel文件有效 我找不到引发“Object reference not se

在捕获错误“GDI+中发生一般错误”后,我出现了一个奇怪的错误

当我试图打开excel文件时,请按说明:

Workbook workbook = new Workbook();
workbook.LoadFromFile(FileName);
但是在捕捉到此异常后几分钟,我的应用程序将崩溃(NullReferenceException),而不指定错误的位置

知道当我尝试扫描excel文件时会发生这种情况,但它对其他excel文件有效

我找不到引发“Object reference not set to a instance of a Object”异常的位置。Visual Studio显示它找不到它

因此,即使我试图在代码中处理异常,我也将一无所获


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

TL:DR;版本为:

  • 当抛出“GDI+中的泛型错误”异常时,出现了一些问题,您没有在异常处理程序中修复该异常(可能是因为您没有办法这样做)
  • 一段时间后,由于前面的事情,另一件事出了问题
长版本

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

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

  • 到底出了什么问题
  • 后果是什么
  • 确切地说,需要做些什么才能把所有的事情——所有的后果——都做好
如果您不知道所有这些事情,那么就无法正确处理异常

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

一旦出现了您不完全理解的异常,应用程序的内部数据结构就可能不再一致。例如,某些东西可能会丢失,而这些东西在其他情况下被认为是存在的

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


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

抛出异常时文件是否仍然打开?只是好奇,为什么要使用这种方法?而不是
xlWorkBook=xlexcel.Workbooks.Open(..)
@SiddharthRout,因为OP没有使用经典的
Excel.interop
(没有
LoadFromFile
方法),我猜他在使用第三方库(Spire.xls),所以我们不可能说出发生了什么。@SiddharthRout因为我使用的是第三方库(Spire.xls)不是Excel.interop@mehow不,它是如何关闭的。但奇怪的是,它适用于我帖子中的所有文件,除非有一个!我想它崩溃是因为文件包含错误的宏。你知道如何禁用宏吗?