我使用C#創建了一個簡單的控制檯應用程序。它創建一個類的實例並調用其中一個類的方法。此方法包含一個try-catch塊來捕獲System.Net.WebException類型的異常並重新拋出它,以便主方法可以捕獲它並採取適當的行動。當我執行已編譯的應用程序時,異常不會傳遞給主類,並且用戶永遠不會看到我的自定義錯誤消息。相反,這個屏幕上彈出,告訴我,有未處理的引發WebException(這是在德國,但我認爲它可以無論如何被識別;-)):.NET異常不會從類傳遞到主程序
alt text http://img29.imageshack.us/img29/4581/crapq.png
這是我的一個名爲BuffaloRouter類中的方法:
public void Login()
{
string sUrl = _sUrl + "/somestuff.htm";
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(sUrl);
CredentialCache credCache = new CredentialCache();
credCache.Add(new Uri(sUrl), "Basic", _credential);
request.Credentials = credCache;
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream receiveStream = response.GetResponseStream();
StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
_sContent = reader.ReadToEnd();
response.Close();
receiveStream.Dispose();
reader.Dispose();
_parseSessionIds();
}
catch (WebException)
{
throw;
}
}
這是我的主類中的方法:
private static bool _login()
{
_router = new BuffaloRouter(_sIP, new System.Net.NetworkCredential("root", _sPassword));
try
{
Console.WriteLine("Login...");
_router.Login();
return true;
}
catch (System.Net.WebException)
{
_showErrorMessage("Could not connect to " + _sIP);
return false;
}
}
更新: 我覺得更比有點尷尬,寧可不談論它。但是在我沒有看到自己正在做的事情之前,有好幾次---) 當我運行應用程序時,主類內部的方法甚至沒有被調用。被調用的那個沒有try-catch塊,這樣在我們的類的方法中拋出的異常使應用程序按照它應該做的那樣做,即CRASH! 我很愚蠢,很抱歉浪費白天的時間。
我不熟悉的錯誤對話框。翻譯可能會幫助您獲得更好/更快的答案。 – Aaronaught
該對話框基本上聲明應用程序不再工作,併爲我提供了一些選項,用於在線查找解決方案,關閉應用程序或進行調試。 – bitfrickler
我更新了我的帖子。 – bitfrickler