2010-05-07 12 views
9

Geçerli istisnayı bir değişken olarak geçmek zorunda kalmadan almanın bir yolunu arıyorum.Değişkeni geçmeden mevcut istisna nasıl alınır?

Ben şimdiki durum almak için $ istisna kullanabilirsiniz aşağıdaki kodu izle penceresinde

public void MakeItFail() 
{ 
    try 
    { 
     throw new FailException(); 
    } 
    catch // Yes I'm aware that this shouldn't be done, but I don't want to go through all the code base and change it 
    { 
     ShowMessage("An error occured"); 
    } 
} 

public void ShowMessage(string message) 
{ 
    // How can I retrieve the exception here 
} 

varsayalım. Bir kod eşdeğeri var mı?

+2

kötü. Çok kötü Durdur şunu. Yapma. Hayır. Senin için değil. Yapma. Çerçeve tasarım kurallarının bir kopyasını alın ve istisna işleme bölümünü okuyun. – Will

+1

@Will - Onların uygulamalarını yeniden yazmak için çalışmak istediğinizi düşünmüyorum? – ChaosPandion

+0

Ben ne kadar büyük kod temeli olduğunu bilmiyorum, ama ben şiddetle hatta zaman indirim, bu geçici çözüm kesmek uygulamak ve test edilebilmesi için gerekli süreden daha az olacağını yakalamak tüm maddeler geri dönüp düzeltmek için alacaktı zaman şüpheli uzun vadede bunu korumak için gerekli. –

cevap

8

Hayır, yok.

Bir parametre kullanmak gerekir. öncelikle Uygulamayı yüklemek bu olaya abone

+0

ICorDebugThread.GetCurrentException() kullanarak bazı olası ama zor yoldan okudum ama denemedim. –

+0

Yönetilmeyen hata ayıklayıcı API'nin bir parçası. Bunu yalnızca bir hata ayıklayıcıda duraklatılmış bir işlemde kullanabilirsiniz. Bir süreç kendini hata ayıklayamadığından, ilkini ayıklamak ve bu API'yi çağırmak için ikinci bir işlem yazmanız gerekir. – SLaks

+1

Ve şu tavşan deliğinden aşağı gitmiyorum: P –

3

deneyin. Eğer yapmayı düşündüğünü Ne

AppDomain.CurrentDomain.FirstChanceException += (s, e) => 
{ 
    ShowMessage(e.Exception.Message); 
}; 
+0

AWW that.net 4 sadece!. Bu mevcut bir program ve biz henüz –

+2

@Pierre için dönüştürmüyorsun - Sadece başka bir neden yükseltmek için iyi bir neden ... – ChaosPandion

+2

Büyük, başka bir güvenlik deliği ... –

İlgili konular