我有一個非常簡單的應用程序,我們爲它提供了一個我們的網站列表,並且它對它們做了一個並行的foreach,並在每個動作內部做了一個http post。異常未被捕獲
類似如下:
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兆。
有一些無法捕捉的例外。 (如果我沒有記錯,它們會被捕獲並自動重新生成,並且機制是運行時在第一次拋出異常時設置了某個標誌,表明它應該被重新拋出)。失去管理內存就是其中之一。 – CodesInChaos
您會如何期望從內存不足錯誤中繼續? – dlev
如果你內存不足,運行時應該做什麼?捕捉異常有什麼幫助?您仍然內存不足,因此應用程序崩潰... –