Необработанное исключение WCF по коду пользователя - PullRequest
0 голосов
/ 29 апреля 2011

Я разрабатываю службу WCF на C # и .NET Framework 4.0.

У меня есть следующий код:

public long CreateUser(string userName)
{
    try
    {
        if ((userName == null) ||
            (userName.Equals(string.Empty)))
            throw new ArgumentNullException();

        ...

    }
    catch (Exception ex)
    {
        resultCode = 3;
        throw ex;
    }

    ...

}

, когда userName == string.Empty останавливается, а отладчикдиалог сказал:

ArgumentNullException unhandled by user code.

Как я могу это исправить?

ОБНОВЛЕНИЕ Я хочу уведомить клиента об ошибке на стороне сервера.

Ответы [ 6 ]

1 голос
/ 29 апреля 2011

Если вы хотите уведомить клиента, используйте FaultException .

1 голос
/ 29 апреля 2011

Я думаю, что String.IsNullOrEmpty () является наиболее понятным способом; но я не уверен, что понимаю вопрос.

Ваш ЕСЛИ работает; и ваш код выбрасывает исключение. Поэтому запись его с помощью String.IsnullOrEmpty () не изменит этого.

Хотите знать, как «обработать» это исключение?

1 голос
/ 29 апреля 2011

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

if (string.IsNullOrEmpty(userName))
{
  //handle
}
1 голос
/ 29 апреля 2011

Вам необходимо обработать исключение при использовании метода CreateUser:

try
{
    myClass.CreateUser (user);

}
catch (ArgumentNullException ex)
{

}
0 голосов
/ 29 апреля 2011

Во-первых, вы должны знать о String.IsNullOrEmpty (), это полезно в предоставленном вами случае.

Во-вторых, вы выбрасываете исключение в стек.Далее должен быть блок try / catch, который перехватывает исключение, которое вы бросаете.Здесь попытка / уловка не приносит вам пользы.

public long CreateUser(string userName)
{
        if (String.IsNullOrEmpty(userName))
            throw new ArgumentNullException();

        ...
}

тогда в другом месте,

try 
{
     someClass.CreateUser(userName);
}
catch (ArgumentNullException ex)
{
  ... error handling code here
}
0 голосов
/ 29 апреля 2011

Обработка исключения: -)

Это нормальное поведение.

Ваш клиент должен вызывать ваш метод следующим образом:

try {
   long result = myService.CreateUser(someVariable);
} catch (ArgumentNullException exc)
{
  // Your error-handling code here
}

Если вы не хотитечтобы обработать исключение, но просто обработать «код ошибки» (что является плохой практикой, безусловно, не рекомендуется), тогда вам следует удалить «throw ex;»строка из вашего кода.

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