Какое исключение бросить? - PullRequest
3 голосов
/ 11 августа 2009

Этот вопрос может показаться немного глупым, но здесь он идет.

У меня есть две функции, которые можно вызывать в любой момент. Первая функция делает снимок, а вторая анализирует данные, взятые из этого снимка. Конечно, если пользователь пытается проанализировать снимок, прежде чем делать его, мое приложение должно выдать исключение. Я знаю ArgumentOutOfRangeException, который обычно выдается, когда ...... есть неверный аргумент, но это не совсем так. Есть ли какие-либо встроенные исключения для таких случаев, или мне придется использовать ArgumentOutOfRangeException?

Спасибо

Ответы [ 4 ]

16 голосов
/ 11 августа 2009

Похоже на исключение InvalidOperationException. http://msdn.microsoft.com/en-us/library/system.invalidoperationexception.aspx

Тем не менее, если вы можете спроектировать свой API так, чтобы вы не могли попасть в эту ситуацию, это было бы лучше. Нечто подобное (псевдо):

public Data TakeSnapshot()
{
   // ...
   return new Data(...);
}

public void Analyze(Data data)
{
   // ...
}

Таким образом, нет возможности вызвать их из строя.

16 голосов
/ 11 августа 2009
8 голосов
/ 11 августа 2009

Почему вы позволяете ему ошибиться? Как насчет метода

 ISnapshot getSnapshot()

с ISnapshot, имеющим метод анализа. Или просто проанализируйте (), чтобы получить снимок, если он недоступен

0 голосов
/ 11 августа 2009

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

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