Исключения
От: oRover Украина  
Дата: 05.06.04 14:11
Оценка: :)
Кто юзает throw Exception? Не пойму, зачем это надо. Кто может привести пример?
... << RSDN@Home 1.1.3 stable >>
Re: Исключения
От: PawnHunter  
Дата: 05.06.04 15:19
Оценка:
Здравствуйте, oRover, Вы писали:

R>Кто юзает throw Exception? Не пойму, зачем это надо. Кто может привести пример?


Допустим, метод принимает int. Причем, можно передать только значения, скажем, от одного до пяти.
В методе проверяешь, укладывается ли параметр в допустимый интервал, и если нет, бросаешь ArgumentOutOfRangeException. Вот пример))
Re[2]: Исключения
От: oRover Украина  
Дата: 05.06.04 15:39
Оценка:
Здравствуйте, PawnHunter, Вы писали:

PH>Здравствуйте, oRover, Вы писали:


R>>Кто юзает throw Exception? Не пойму, зачем это надо. Кто может привести пример?


PH>Допустим, метод принимает int. Причем, можно передать только значения, скажем, от одного до пяти.

PH>В методе проверяешь, укладывается ли параметр в допустимый интервал, и если нет, бросаешь ArgumentOutOfRangeException. Вот пример))

прямо в методе бросаешь? хм, в принципе вариант
... << RSDN@Home 1.1.3 stable >>
Re: Исключения
От: Lapin Украина  
Дата: 05.06.04 16:21
Оценка:
"oRover" <20111@news.rsdn.ru> wrote in message news:667957@news.rsdn.ru...
From: oRover

Кто юзает throw Exception?
>>Все кто в принципе производит обработку ошибок с использованием исключений
Не пойму, зачем это надо. Кто может привести пример?
>>Если слышал о throw, то знаешь, наверное, о try...catch. И что, не задавал себе вопроса о том, откуда берутся ексепшны для этих try... catch ?
... << RSDN@Home 1.1.3 stable >>
Исключения Оценить
Posted via RSDN NNTP Server 1.9 alpha
Спасибо за внимание...
Re: Исключения
От: Jenyay http://jenyay.net
Дата: 06.06.04 05:45
Оценка:
Здравствуйте, oRover, Вы писали:

R>Кто юзает throw Exception? Не пойму, зачем это надо. Кто может привести пример?


Например, когда что-то идет не так, как ты хочешь (неправильный тип передали или неправильное значение) и ты не знаешь что с этим делать и не можешь исправить. Ну и заодно еще приятно попользовать Debug.Assert().
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re: Исключения
От: Merle Австрия http://rsdn.ru
Дата: 06.06.04 08:34
Оценка:
Здравствуйте, 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;.
... [RSDN@Home 1.1.3 stable]
http://www.rsdn.org/File/343/537.gif Мы уже победили, просто это еще не так заметно...
Re: Исключения
От: mikа Stock#
Дата: 06.06.04 09:32
Оценка: 24 (1)
Здравствуйте, oRover, Вы писали:

http://rsdn.ru/Forum/Message.aspx?mid=620723
Автор: Воронков Василий
Дата: 27.04.04
Re[2]: Исключения
От: Аноним  
Дата: 06.06.04 12:42
Оценка: +2
Здравствуйте, 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;.
Re[3]: Исключения
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.06.04 14:17
Оценка: +1
Здравствуйте, <Аноним>, Вы писали:

А>на насчет этого я бы поспорил. условной проверке надо отдавать предпочтение.


Зависит от задачи.
... << RSDN@Home 1.1.4 beta 1 >>
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Исключения
От: oRover Украина  
Дата: 06.06.04 17:16
Оценка: :)
Здравствуйте, Lapin, Вы писали:


L> Кто юзает throw Exception?

>>>Все кто в принципе производит обработку ошибок с использованием исключений
L> Не пойму, зачем это надо. Кто может привести пример?
>>>Если слышал о throw, то знаешь, наверное, о try...catch. И что, не задавал себе вопроса о том, откуда берутся ексепшны для этих try... catch ?

причем тут откуда берутся... Я спрашивал зачем свои Exception создавать...
... << RSDN@Home 1.1.3 stable >>
Re[3]: Исключения
От: mikа Stock#
Дата: 07.06.04 16:31
Оценка:
Здравствуйте, oRover, Вы писали:

R>причем тут откуда берутся... Я спрашивал зачем свои Exception создавать...


http://rsdn.ru/Forum/Message.aspx?mid=436552&amp;only=1
Автор: Mika Soukhov
Дата: 07.11.03
Re[3]: Исключения
От: Igor Trofimov  
Дата: 07.06.04 18:06
Оценка:
R>причем тут откуда берутся... Я спрашивал зачем свои Exception создавать...

Да.. такого варианта я не ожидал
Ты эта, потрудись впредь более ясно выражаться.
Кто бы мог подумать, что "Кто юзает throw Exception" означает "зачем свои Exception создавать"...
Re[2]: Исключения
От: mihailik Украина  
Дата: 08.06.04 09:27
Оценка:
M>
M>    catch(DivideByZeroException innerException)
M>    {
M>        throw new ArgumentOutOfRangeException("Никаких нулей при вызове!", innerException)
M>    }
M>}
M>
... << Rsdn@Home 1.1.4 beta 1 >>
Re[3]: Исключения
От: Merle Австрия http://rsdn.ru
Дата: 08.06.04 09:56
Оценка:
Здравствуйте, mihailik, Вы писали:

M>>
M>>    catch(DivideByZeroException innerException)
M>>    {
M>>        throw new ArgumentOutOfRangeException("Никаких нулей при вызове!", innerException)
M>>    }
M>>}
M>>


Хха, ArgumentOutOfRangeException InnerException'ов не принимает.
Собственно на это Рихтер и жаловался, мол, не по уму сделано.
... [RSDN@Home 1.1.3 stable]
http://www.rsdn.org/File/343/537.gif Мы уже победили, просто это еще не так заметно...
Re[4]: Исключения
От: mihailik Украина  
Дата: 08.06.04 16:47
Оценка:
M>Хха, ArgumentOutOfRangeException InnerException'ов не принимает.
M>Собственно на это Рихтер и жаловался, мол, не по уму сделано.

Вот вредоносная пакость! Design Guidelines не учат, понимаешь. Наверное, VB-шник какой-нибудь бывалый это прошляпил.

Нет, даже какой-нибудь ExecutionEngineException, который вручную вообще вызывать не полагается — даже у него сигнатура с InnerException есть.


Какой из этого конструктивный вывод? Очень просто: FX Cop изобрели и внедрили только году в 2003-м, не раньше. Иначе наверняка бы этот баг отловили.
... << Rsdn@Home 1.1.4 beta 1 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.