Выход из приложения при ошибке в библиотеке C # - PullRequest
1 голос
/ 11 ноября 2010

Это глупый вопрос, я признаю.Итак, извиняюсь, если это напрасно тратит ваше время, но я просто не могу найти решение.

Приложение WinForm с библиотекой классов.Я использую Log4Net DLL для регистрации информации.

В Button_Click я вызываю функцию из библиотеки классов, которая может вызвать ошибку.Итак, у меня есть содержимое функции внутри блока try-catch-finally.В подвохе я пишу операторы журнала (используя dll Log4Net).

Теперь, когда произошла ошибка, я хочу, чтобы сообщение отображалось в пользовательском интерфейсе.И после того, как сообщение показано, я хочу, чтобы оно вышло.

Как передать элемент управления из блока catch библиотеки классов обратно в код формы, чтобы я отобразил сообщение и затем вышел?

Ответы [ 3 ]

5 голосов
/ 11 ноября 2010

Просто вызовите throw без каких-либо параметров после того, как вы зарегистрируете ошибку в обработчике исключений в библиотеке классов, и он сбросит точно такое же исключение с тем же стеком вызовов и т. Д.

Затем позвольте вашемуФорма поймать его и обращаться с ним, как вы хотите.

2 голосов
/ 11 ноября 2010

В методе библиотеки классов, в подвохе, повторно сгенерируйте исключение, чтобы оно могло всплыть до формы.

В форме Button_Click заключите вызов метода класса в попытку catch, а в захвате отобразите сообщение и выйдите.

0 голосов
/ 11 ноября 2010

Библиотека, вероятно, должна повторно выдать исключение после регистрации об этом.

class Form 
{
    OnClick() 
    {
        try
        {
            library.Routine();
        }
        catch(Exception e)
        {
            // messagebox
            // exit
        }
    }
}

class Library 
{
    public void Routine() 
    {
        try
        {
            // stuff
        }
        catch(Exception e)
        {
            logger.error("error in routine", e);
            throw;
        }
    }
}
...