Какой хороший способ для C # DLL вернуть ошибку вызывающему приложению? - PullRequest
2 голосов
/ 05 мая 2009

Я пишу DLL, которая является оболочкой для базы данных доступа. и я довольно новичок в C # в целом, так как мой опыт в LAMP веб-разработки с Perl, я не уверен, что это хороший способ вернуть ошибку вызывающему приложению в случае, если они передают неправильные параметры моим функциям или что нет .

На данный момент я не имею ни малейшего представления, кроме как, вероятно, сделать несколько сообщений msgbox или выдать некоторые исключения, но я не знаю, с чего начать. Любая помощь или ресурсы будут более чем полезны:)

спасибо ~

Ответы [ 6 ]

9 голосов
/ 05 мая 2009

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

. Библиотечные сборки .Net обычно всплывают в исключениях для хост-приложения, поэтому такой подход я бы рассмотрел.

public static class LibraryClass
{
    public static void DoSomething(int positiveInteger)
    {
        if (positiveInteger < 0)
        {
            throw new ArgumentException("Expected a positive number", "positiveInteger");
        }
    }
}

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

try
{
    LibraryClass.DoSomething(-3);
}
catch(ArgumentException argExc)
{
    MessageBox.Show("An Error occurred: " + argExc.ToString());
}
3 голосов
/ 05 мая 2009

Неправильные параметры обычно обрабатываются с помощью исключения ArgumentException или одного из его подклассов.

2 голосов
/ 05 мая 2009

Ознакомьтесь с рекомендациями по разработке для разработчиков библиотек классов: Рекомендации по обработке и обработке ошибок

2 голосов
/ 05 мая 2009

Вы хотите выбросить исключение.

См

http://msdn.microsoft.com/en-us/library/ms229007.aspx

для наиболее распространенных исключений фреймворка, таких как ArgumentException и InvalidOperationException Смотри также

http://msdn.microsoft.com/en-us/library/ms229030.aspx

1 голос
/ 05 мая 2009

Dlls, как правило, не должны создавать какие-либо элементы пользовательского интерфейса для сообщения об ошибке. Вы можете генерировать (то же самое, что и рейзить) много разных видов исключений, или создавать свои собственные, и вызывающий код (клиент) может перехватывать и сообщать пользователю.

public void MyDLLFunction()
{
    try
    {
        //some interesting code that may
        //cause an error here
    }
    catch (Exception ex)
    {
        // do some logging, handle the error etc.
        // if you can't handle the error then throw to
        // the calling code
        throw;
        //not throw ex; - that resets the call stack
    }
}
0 голосов
/ 05 мая 2009

бросить новое исключение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...