2009-06-12 11 views
11

Wiem, że to naprawdę nie ma znaczenia, ale chciałbym wiedzieć, co jest poprawne.C#: Czy podnosisz lub rzucasz wyjątek?

Jeśli fragment kodu zawiera jakąś wersję throw new SomeKindOfException(). Czy mówimy, że ten fragment kodu może potencjalnie spowodować wyjątek? Lub rzucić wyjątek?

Słowo kluczowe jest throw, więc jestem trochę pochylony w kierunku, ale podnieść wyjątek jest również używany dużo ...

Czy mają jakiś inny sposób? Czy jeden z nich w pewien sposób sugeruje różnicę w stosunku do drugiej? Czy to tylko dwa słowa oznaczające dokładnie to samo?

+0

Dla pokrewnej dyskusji w Ruby: http://stackoverflow.com/questions/51021 –

Odpowiedz

25

W terminologii C#, podnoszenie jest używany w kontekście wydarzeń i rzucanie jest używany w kontekście wyjątków.

Osobiście uważam, że kombinacja throw/catch jest piękniejsza niż raise/catch.

+0

Ah, oczywiście, całkowicie się zgadzam. Teraz ma sens! Dziękuję za wyjaśnienie tego :) – Svish

+3

C# również używa "windy", aby powiedzieć "zapewnić zerowalną wersję operatora na nie-zerowalnych typach", a "wciągnik" oznacza "zamień lokalną zmienną w pole zamknięcia klasa". Tak więc w języku C# można podnosić, podnosić lub podnosić rzeczy, a wszystkie one oznaczają coś innego. –

3

Nie mogę mówić za C#, ale w C++ "rzut" został wybrany, ponieważ "podbicie" było już brane jako standardowa nazwa funkcji.

1

Myślę, że podczas gdy rzucam jest lepszy, oba terminy są wymienne. Bardzo przydatne, jeśli musisz użyć go dwukrotnie w tekście, aby uniknąć powtarzania tego samego słowa. Ale to jest stylistyka, która nie jest niezbędna do pisania technicznego (ale wciąż fajnie jest mieć).

+2

Masz rację, pisząc po angielsku, ale w piśmie technicznym lepiej używać konsekwentnie tego samego słowa, lub czytelnik może pomyśleć, że jest jakaś różnica. – stivlo

0

Rzut lub podbicie wydaje się być w porządku, mają na myśli to samo. Nie napisałbym tego, ale kiedy mówię, zwykle mówię "chuck wyjątek".

W przypadku wydarzeń użyłbym albo "ogniu zdarzenia" albo "podnieś wydarzenie".

+0

"Pożar" jest oczywiście w powszechnym użyciu na imprezy. Gdy wymyślał wytyczne dotyczące terminologii, zespół robiący to uważał, że "ogień" wydawał się niepotrzebnie beliczny, więc zasugerowali, by unikać "ognia" na rzecz "podbicia".Moją osobistą opinią jest to, że jest to trochę głupie, ale "podbicie" jest w porządku i równie dobrze możemy ujednolicić jedną lub drugą. –

1

Terminologia różnych języków faworyzuje "rzut". Zgadzam się, że "rzut" ma dużo więcej sensu, biorąc pod uwagę, że jest to użyte słowo kluczowe, a dokumentacja kompilatora/języka zawsze odnosi się do wyjątku będącego "wyrzucanym".

Jednak w brzuchu behemoth wyjątki są w rzeczywistości Raised, nie są rzucane. Jeśli znajdziesz się wystarczająco głęboko w debuggerze, wpatrując się w EXCEPTION_RECORD, wtedy mówisz w terminologii SEH, w której szczególna klasa wyjątków od kompilatora/języka (eh, clr, vcpp) jest tylko jednym z wielu wyjątków dotyczących smaków. Domyślam się, że pierwotne warunki, dla których zgłaszane są wyjątki, takie jak błędy stron i przepełnienia stosu, były "zauważone" przez jądro, które "informowały" o trybie użytkownika warunku, a nie wyjątku, który kod użytkownika "rzuca" na siebie , więc termin ten ma więcej sensu w tym kontekście.

Powiązane problemy