2015-05-28 4 views
0

У меня есть запрос на веб-приложение и генерируется основное исключение, если null.Запрос на веб-заявку

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

Пример кода:

public async Task <Lead> BuildLeadFromRequest(object request) 
{ 
     var req = request as WebApplicationRequest; 
     if (req == null) 
      throw new Exception(); //TODO: Something better than throwing an exception 
} 

Заранее спасибо

+1

Прежде всего, почему у вас нет 'public async Task BuildLeadFromRequest (запрос WebApplicationRequest)'? Если по какой-либо причине вы не можете его изменить, вы можете использовать 'ArgumentException' с правильным сообщением об ошибке. –

ответ

1

Пользователь не будет знать разницу между типами исключений, ожидать, что они действуют на определенный type является дураки ставки, то, что полезно для пользователя, является значимым сообщением, неясные имена исключений и трассировки стека полезны только нам, разработчикам.

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

Есть много способов, чтобы дать больше информации, но самый простой, как это:

if (req == null) 
     throw new Exception("Request was not valid."); 

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

if (req == null) 
     throw new Exception("Request was not valid. Perhaps you did operation A instead of doing expected operation B... blah blah"); 

Очевидно, что вы можете создать суб-классы из Exception или ApplicationException, но это ваш звонок.

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

+1

Я согласен с этим. Я не знаком с C# (и ASP.NET MVC, если это то, что использует OP), однако OP может просто перенаправить на страницу 404, если аргумент в функцию будет искажен или иным образом неверен. –

+0

согласился, пока есть полезная информация о том, почему вам показывают 404, самая большая проблема с ошибками/исключениями - исключение, которое ничего мне не говорит. Исключение NullRef очевидно .. и на самом деле это действительно такое исключение OP, но есть большой вопрос, как это может произойти в этом сценарии. –

Смежные вопросы