Después de pasar por la mayor parte de las respuestas aquí, me gustaría añadir un par de reflexiones.
Confiar en la documentación XML Los comentarios y esperar que otros confíen es una opción pobre. La mayoría del código de C# que he encontrado no documenta los métodos de forma completa y coherente con los comentarios de la documentación XML. Y luego está el problema más grande: sin excepciones comprobadas en C#, ¿cómo podría documentar todas las excepciones que arroja su método para que su usuario API sepa cómo manejarlas individualmente? Recuerda, solo sabes sobre los que te arrojas con la palabra clave throw en tu implementación. Las API que está utilizando dentro de la implementación de su método también pueden arrojar excepciones que no conoce porque podrían no estar documentadas y no las está manejando en su implementación, por lo que explotarán ante la persona que llama. método. En otras palabras, estos comentarios de documentación XML no reemplazan las excepciones marcadas.
Andreas relacionó una entrevista con Anders Hejlsberg en las respuestas aquí sobre por qué el equipo de diseño de C# decidió no marcar excepciones. La respuesta definitiva a la pregunta original se oculta en esa entrevista:
Los programadores proteger su código escribiendo intento por último está en todas partes, por lo que va a realizar una copia correctamente si se produce una excepción, pero no son realmente interesado en manejar las excepciones.
En otras palabras, a nadie debería interesarle qué tipo de excepción se puede esperar para una API en particular, ya que siempre las encontrará en todas partes. Y si realmente desea preocuparse por excepciones particulares, la forma de manejarlas depende de usted y no de alguien que defina una firma de método con algo como la palabra clave Java throws, lo que obliga a un manejo de excepciones particular en un usuario API.
-
Personalmente, estoy desgarrado aquí. Estoy de acuerdo con Anders en que haber verificado las excepciones no resuelve el problema sin agregar problemas nuevos y diferentes. Al igual que con los comentarios de la documentación XML, rara vez veo el código C# con todo incluido en los bloques try finally. A mí me parece que, de hecho, esta es su única opción y algo que parece una buena práctica.
@Louis RH - Lo entiendo. No hay equivalente C# (o .NET). – Oded
"burbujeará", ¿esto significa que esto es equivalente a todos los métodos que tienen una cláusula throws en Java? –
@Louis RH - tipo de. Significa que una excepción, si no se maneja, subirá en la cadena de llamadas a través de cada función de llamada hasta que se maneje. – Oded