Здравствуйте, oRover, Вы писали:
R>Кто юзает throw Exception? Не пойму, зачем это надо. Кто может привести пример?
Допустим, метод принимает int. Причем, можно передать только значения, скажем, от одного до пяти.
В методе проверяешь, укладывается ли параметр в допустимый интервал, и если нет, бросаешь ArgumentOutOfRangeException. Вот пример))
Здравствуйте, PawnHunter, Вы писали:
PH>Здравствуйте, oRover, Вы писали:
R>>Кто юзает throw Exception? Не пойму, зачем это надо. Кто может привести пример?
PH>Допустим, метод принимает int. Причем, можно передать только значения, скажем, от одного до пяти. PH>В методе проверяешь, укладывается ли параметр в допустимый интервал, и если нет, бросаешь ArgumentOutOfRangeException. Вот пример))
Кто юзает throw Exception? >>Все кто в принципе производит обработку ошибок с использованием исключений
Не пойму, зачем это надо. Кто может привести пример? >>Если слышал о throw, то знаешь, наверное, о try...catch. И что, не задавал себе вопроса о том, откуда берутся ексепшны для этих try... catch ?
... << RSDN@Home 1.1.3 stable >>
Исключения Оценить
Здравствуйте, oRover, Вы писали:
R>Кто юзает throw Exception? Не пойму, зачем это надо. Кто может привести пример?
Например, когда что-то идет не так, как ты хочешь (неправильный тип передали или неправильное значение) и ты не знаешь что с этим делать и не можешь исправить. Ну и заодно еще приятно попользовать Debug.Assert().
Здравствуйте, oRover, Вы писали:
R>Кто юзает throw Exception? Не пойму, зачем это надо. Кто может привести пример?
У Рихтера это достаточно подробно расписано, причин может быть несколько.
Ну, один вариант зачем это надо PawnHunter привел.
Затем, после перехвата одного типа исключения иногда нужно сгенерировать исключение другого типа, например:
public int Method1(int x)
{
try
{
return 100/x;
}
catch(DivideByZeroException ex)
{
throw new ArgumentOutOfRangeException("Никаких нулей при вызове!")
}
}
Так правильнее, чем каждый раз на x!=0 проверять...
И, наконец, иногда нужно, после обработки исключения возбудить тоже самое исключение. Например, если в случае любой ошибки надо откатить какие-то действия (в finally помещать нельзя, так как откатывать надо только в случае ошибки), тогда пишется catch{} без параметров, выполняются действия по откату, а затем возбуждается то же самое исключение throw;.
Здравствуйте, Merle, Вы писали:
M>Здравствуйте, oRover, Вы писали:
R>>Кто юзает throw Exception? Не пойму, зачем это надо. Кто может привести пример? M>У Рихтера это достаточно подробно расписано, причин может быть несколько. M>Ну, один вариант зачем это надо PawnHunter привел. M>Затем, после перехвата одного типа исключения иногда нужно сгенерировать исключение другого типа, например: M>
M>public int Method1(int x)
M>{
M> try
M> {
M> return 100/x;
M> }
M> catch(DivideByZeroException ex)
M> {
M> throw new ArgumentOutOfRangeException("Никаких нулей при вызове!")
M> }
M>}
M>
M>Так правильнее, чем каждый раз на x!=0 проверять...
на насчет этого я бы поспорил. условной проверке надо отдавать предпочтение.
M>И, наконец, иногда нужно, после обработки исключения возбудить тоже самое исключение. Например, если в случае любой ошибки надо откатить какие-то действия (в finally помещать нельзя, так как откатывать надо только в случае ошибки), тогда пишется catch{} без параметров, выполняются действия по откату, а затем возбуждается то же самое исключение throw;.
L> Кто юзает throw Exception? >>>Все кто в принципе производит обработку ошибок с использованием исключений L> Не пойму, зачем это надо. Кто может привести пример? >>>Если слышал о throw, то знаешь, наверное, о try...catch. И что, не задавал себе вопроса о том, откуда берутся ексепшны для этих try... catch ?
причем тут откуда берутся... Я спрашивал зачем свои Exception создавать...
R>причем тут откуда берутся... Я спрашивал зачем свои Exception создавать...
Да.. такого варианта я не ожидал
Ты эта, потрудись впредь более ясно выражаться.
Кто бы мог подумать, что "Кто юзает throw Exception" означает "зачем свои Exception создавать"...