C# 异常未被捕获

C# 异常未被捕获,c#,exception-handling,out-of-memory,parallel-extensions,C#,Exception Handling,Out Of Memory,Parallel Extensions,我有一个非常简单的应用程序,我们给它一个我们网站的列表,它在这些网站上做一个并行的foreach,在每个动作中它向它发送一个http帖子 类似如下: static int success = 0 static void Main(string[] args) { try { Parallel.ForEach(sites, site=> { try{ if(DoWebPost(site)) {

我有一个非常简单的应用程序,我们给它一个我们网站的列表,它在这些网站上做一个并行的foreach,在每个动作中它向它发送一个http帖子

类似如下:

static int success = 0
static void Main(string[] args) {
    try {
        Parallel.ForEach(sites, site=> {
            try{
                if(DoWebPost(site)) {
                    Console.Write("Posted {0} - {1}", ++success, site);
                }
            } catch {}
        });
    } catch {}
}
我不明白为什么它会抛出OutOfMemoryException,更不用说为什么它会导致整个应用程序崩溃,而不仅仅是捕获并继续

编辑:不确定异常发生在何处,因为它不在本地,只有在生产环境中运行时。。。这意味着没有可用的调试。应用程序是64位的,很少使用超过100兆的数据。

如果你通过处理这个异常来“修复”你的代码,你就是在埋头苦干


您提到发布的代码与您使用的代码有些相同。 你真的能发布完整的代码吗?或者是造成这种情况的确切代码。
有人告诉我您有某种内存泄漏,您需要首先解决此问题。

有些异常无法捕获。(如果我没记错的话,它们会被捕获并自动重试,机制是运行时在第一次抛出异常时设置一个特定的标志,这表明它应该被重试)。管理内存不足就是其中之一。您希望如何从内存不足错误中继续?如果内存不足,运行时应该怎么做?捕捉异常有什么帮助?内存仍然不足,因此应用程序崩溃…与异常无关,但应使用Interlocked.Increment从不同线程递增静态变量。为AppDomain.Current.UnhandledException实现事件处理程序,并记录或显示e.ExceptionObject.ToString()的值。如果这对诊断没有帮助,就把它贴在这里。不幸的是,没有,而且它不是每次都这样做,即使在相同的参数下。我所做的只是重新运行应用程序,它可以工作,但我不想照看它。