У меня проблема с перехватом исключения в этом коде:
Класс Client может выдавать некоторые исключения.Если имя пользователя и пароль неверны (для IE), клиентский класс выбрасывает AccessDeniedExeption , но происходит сбой программы без перехвата этого исключения.
Я что-то не так сделал?
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
string dbcUsername = "account", dbcPassword = "password";
try
{
client = (Client)new HttpClient(dbcUsername, dbcPassword);
client.Decode(new DecodeDelegate(this.Decoded), e.Argument,
Client.DefaultTimeout);
}
catch (AccessDeniedException eAccess)
{
e.Result = eAccess;
}
catch (Exception eEx)
{
e.Result = eEx;
Debug.WriteLine("Exception"+eEx.Message);
}
this._ready.WaitOne();
}
private void backgroundWorker1_RunWorkerCompleted(object sender,
RunWorkerCompletedEventArgs e)
{
if (e.Result == null)
{
Debug.WriteLine("OK");
}
else
Debug.WriteLine(e.Result.ToString());
}
Обновление: я удалил Try / Catch и изменил RunworkerComplet с этим кодом: Ошибка говорит, что я не обрабатываю AccessDeniedException
private void backgroundWorker1_RunWorkerCompleted(object sender,
RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{
Debug.WriteLine(e.Error.Message);
}
else
{
if (e.Cancelled)
Debug.WriteLine(e.Cancelled);
else
{
Debug.WriteLine(e.Result.ToString());
}
}
}