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

问题描述 投票:44回答:4

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

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很相似

c# .net exception aggregateexception
4个回答
51
投票

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

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


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


8
投票

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

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

}

4
投票

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

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
   }
)

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.