C #: Вы повышаете или бросаете исключение? - PullRequest
13 голосов
/ 12 июня 2009

Я знаю, что это, вероятно, не имеет большого значения, но я хотел бы знать, что правильно.

Если фрагмент кода содержит некоторую версию throw new SomeKindOfException(). Говорим ли мы, что этот фрагмент кода потенциально может вызвать исключение? Или бросить исключение?

Ключевое слово throw, так что я склоняюсь к этому, но для создания исключения также часто используется ...

У них есть какое-то другое значение? Влияет ли один из них на разницу? Или это просто два слова, означающие одно и то же?

Ответы [ 5 ]

26 голосов
/ 12 июня 2009

В терминологии C # повышение используется в контексте событий, а throwing используется в контексте исключений.

Лично я думаю, что комбинация throw/catch красивее, чем raise/catch.

3 голосов
/ 12 июня 2009

Я не могу говорить за C #, но в C ++ было выбрано "throw", потому что в качестве стандартного имени функции уже было использовано "поднимать".

1 голос
/ 12 июня 2009

Терминология различных языков благоприятствует «броску». И я согласен, что «throw» имеет больше смысла, учитывая, что это ключевое слово, а документация компилятора / языка всегда ссылается на исключение «выбросить».

Тем не менее, в животе Бегемота исключения на самом деле Подняты , а не брошены. Если вы нашли себя достаточно глубоко в отладчике, глядя на EXCEPTION_RECORD , тогда вы говорите в терминологии SEH , в которой конкретный класс исключений компилятора / языка ( eh, clr , vcpp ) - это лишь одно из многих исключений, связанных с различными вариантами. Я предполагаю, что исходные условия, для которых возникали исключения, такие как сбои страниц и переполнение стека, были «замечены» ядром, которое «информировало» пользовательский режим о состоянии, а не исключение, которое пользовательский код «выбрасывал» на себя , поэтому термин имеет больше смысла в этом контексте.

1 голос
/ 12 июня 2009

Я думаю, что, хотя throw лучше, оба термина взаимозаменяемы Очень полезно, если вам нужно использовать его дважды в некотором тексте, чтобы избежать повторения одного и того же слова. Но это стилистика, которая не обязательна для технического письма (но все же приятно иметь).

0 голосов
/ 12 июня 2009

Либо бросить, либо поднять кажется нормальным, они значат для меня то же самое. Я бы этого не написал, но когда я говорю, я обычно говорю: «Чак исключение».

Для событий я бы использовал либо «запустить событие», либо «вызвать событие».

...