C# /. Net no tiene excepciones controladas, que resultó ser menos útil en sistemas de gran escala que se pensaba. En muchos proyectos, el tiempo para mantener las especificaciones de excepción de verificación fue mucho mayor que el tiempo de depuración que se guardó al tenerlos.
Las excepciones comprobadas parecen un buen ideal hasta que tenga métodos que puedan tomar delegados o llamadas en el objeto que pase. Tomemos un caso simple, el método Sort() en una lista no puede saber qué excepciones arrojará ya que no sabe qué excepciones arrojará el método Compar() en los objetos que se están ordenando.
Por lo tanto, la especificación de las excepciones que puede arrojar un método debe poder incluir información sobre cómo se completan las excepciones de los objetos y delegados. ¡Nadie sabe cómo hacer esto!
Sin embargo, hay herramientas que puede verificar si está detectando todas las excepciones: consulte Exception Hunter de Red Gate. Personalmente, no veo mucho valor en esta herramienta, sin embargo, si le gustan las excepciones comprobadas, puede resultarle útil.
Imagino que la versión de .NET framework hará una diferencia aquí, pero en las versiones que uso la respuesta es: documenta bien las excepciones potenciales, y no - no hay forma de forzar el tipo de excepción lanzada (menos de atrapando todas las excepciones afuera, y volviendo a envolverlas en tu tipo preferido). No son solo las excepciones que podrías generar en el método, también hay burbujas de burbujas. – Rudu