如何修复mscorlib.dll中发生的''System.AggregateException'“

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何修复mscorlib.dll中发生的''System.AggregateException'“相关的知识,希望对你有一定的参考价值。

我在调试器中遇到这样的问题,程序停止执行。调试器没有显示该行,所以我不知道要修复什么。

mscorlib.dll中发生了未处理的“System.AggregateException”类型异常

附加信息:通过等待任务或访问其Exception属性未观察到任务的异常。结果,终结器线程重新抛出了未观察到的异常。

无法获得本地或参数''的值,因为它在此指令指针处不可用,可能是因为它已经被优化掉了。 System.Threading.Tasks.TaskExceptionHolder

如何解决我的问题?

我也发现这个问题与Cannot obtain value of local or argument as it is not available at this instruction pointer, possibly because it has been optimized away很相似

答案

正如消息所说,你有一个抛出未处理异常的任务。

打开所有异常中断(调试,例外)并重新运行该程序。 这将在最初抛出时显示原始异常。


(附加评论):在VS2015(或以上)。选择Debug> Options> Debugging> General,取消选中“Enable Just My Code”选项。

另一答案

你可以直接处理异常,这样就不会崩溃程序(捕获AggregateException)。您还可以查看内部异常,这将为您提供更详细的错误说明:

try {
    // your code 
} catch (AggregateException e) {

}
另一答案

如果您可以轻松地重现问题,则接受的答案将起作用。但是,作为最佳实践,您应该捕获在任务中执行的任何异常(和日志记录)。否则,如果任务中发生任何意外情况,您的应用程序将崩溃。

Task.Factory.StartNew(x=>
   throw new Exception("I didn't account for this");
)

但是,如果我们这样做,至少应用程序不会崩溃。

Task.Factory.StartNew(x=>
   try {
      throw new Exception("I didn't account for this");
   }
   catch(Exception ex) {
      //Log ex
   }
)
另一答案

在我的情况下,我在使用Edge.js时遇到了这个问题 - 所有问题都是C#Edge.js函数定义中的javascript语法错误。

以上是关于如何修复mscorlib.dll中发生的''System.AggregateException'“的主要内容,如果未能解决你的问题,请参考以下文章

在 mscorlib.dll 中发生 System.ExecutionEngineException'

持续发生的 mscorlib.dll 中发生 System.Threading.ThreadAbortException

在 WPF C# 中保存图像时出现错误 System.UnauthorizedAccessException 在 mscorlib.dll 中发生

“System.OutOfMemoryException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理

EF异常:“System.InvalidOperationException”类型的未经处理的异常在 mscorlib.dll 中发生

mscorlib.dll 中出现“System.ServiceModel.CommunicationException”类型的未处理异常