2009-06-12 10 views
11

Sé que esto probablemente no importa, pero me gustaría saber qué es lo correcto.C#: ¿Levantas o lanzas una excepción?

Si una pieza de código contiene una versión de throw new SomeKindOfException(). ¿Decimos que este fragmento de código puede generar una excepción? O lanzar una excepción?

La palabra clave es throw, por lo que estoy inclinando hacia la clase de eso, sino para elevar una excepción también se utiliza mucho ...

¿Tienen algún tipo de significado diferente? ¿Alguna de ellas implica una diferencia sobre la otra? ¿O son solo dos palabras que significan exactamente lo mismo?

+0

Para una discusión relacionada en Ruby: http://stackoverflow.com/questions/51021 –

Respuesta

25

En # terminología C, elevar se utiliza en el contexto de eventos y lanzan se utiliza en el contexto de excepciones.

Personalmente, creo que throw/catch combinación es más hermosa que raise/catch.

+0

Ah, por supuesto, estoy totalmente de acuerdo. Tiene sentido total ahora! Gracias por aclarar eso :) – Svish

+3

C# también usa "levantar", para significar "proporcionar una versión anulable de un operador en tipos no anulables", y "elevar" para significar "convertir una variable local en un campo de cierre clase". Entonces en C# puedes levantar, levantar o levantar cosas, y todas significan algo diferente. –

3

No puedo hablar para C#, pero en C++ fue elegido "tirar" porque "subir" Ya se tomó como un nombre de función estándar.

1

Creo que mientras que throw es el mejor, los dos términos son intercambiables. Muy útil si tiene que usarlo dos veces en algún texto para evitar repetir la misma palabra. Pero eso es estilística, que no es necesaria para la redacción técnica (pero aún es algo bueno tener).

+2

Tiene razón en la escritura en inglés, pero en la redacción técnica es mejor usar consistentemente la misma palabra, o el lector puede pensar que hay alguna diferencia. – stivlo

0

O tirar o subir parece estar bien, significan lo mismo para mí. No lo escribiría, pero cuando estoy hablando, suelo decir 'arrojar una excepción'.

Para eventos, utilizaría 'fire an event' o 'raise an event'.

+0

"Fuego" es, por supuesto, de uso común para eventos. Al elaborar las pautas terminológicas, el equipo pensó que el "fuego" parecía innecesariamente belicoso, por lo que sugirieron evitar el "fuego" a favor del "aumento".Mi opinión personal es que esto es un poco tonto, pero "elevar" está bien y podríamos estandarizarnos en uno u otro. –

1

La terminología de los distintos idiomas favorece el 'lanzamiento'. Y acepto que 'throw' tiene mucho más sentido teniendo en cuenta que esta es la palabra clave utilizada y que la documentación del compilador/idioma siempre se refiere a la excepción lanzada.

Sin embargo, en el vientre de las excepciones de gigante son en realidad Raised, sin torcer. Si usted se encuentra lo suficientemente profundo en el depurador mirando a un EXCEPTION_RECORD entonces se habla en la terminología de SEH, en el que la clase particular de excepciones compilador/idioma (eh, clr, vcpp) es sólo uno de los muchos sabores excepciones vienen como. Supongo que las condiciones originales para las cuales se plantearon excepciones, como fallas de página y desbordamientos de pila, fueron condiciones notadas por el kernel que estaba 'informando' al modo de usuario de la condición y no como excepción, el código de usuario se estaba 'arrojando' sobre sí mismo , entonces el término tiene más sentido en ese contexto.

Cuestiones relacionadas