Я создал простое консольное приложение, используя C #. Он создает экземпляр класса и вызывает один из методов класса. Этот метод содержит блок try-catch для перехвата исключений типа System.Net.WebException и его повторного выброса, чтобы основной метод мог перехватить его и действовать соответствующим образом. Когда я выполняю скомпилированное приложение, исключение не передается в основной класс, и пользователь никогда не увидит мое пользовательское сообщение об ошибке. Вместо этого появляется этот экран, сообщающий, что было необработанное исключение WebException (оно на немецком языке, но я думаю, что его можно распознать в любом случае; -)):
альтернативный текст 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;
}
}
UPDATE:
Я чувствую себя более чем смущенным и предпочел бы не говорить об этом. Но, как несколько раз, прежде чем я не посмотрел на то, что я делал ;-)
Метод внутри основного класса даже не вызывался, когда я запускал приложение. У того, который был вызван, не было блока try-catch, поэтому исключение, выброшенное в методе моего класса, заставляло приложение делать то, что предполагалось, т.е. CRASH !!
Я тупой, извини, что потратил впустую время.