2010-10-19 21 views
5

Programando Java en Eclipse, estoy acostumbrado a tener que lidiar con excepciones. En C# con VisualStudio parece que no puedo decir "lanza excepción" sobre un método ... Después de mucha codificación encontré muchas excepciones, y tuve que atraparlas como las encontré durante las pruebas. Me gustaría ser forzado a manejarlos, para que VisualStudio pueda decir que aquí necesitas una trampa o no voy a dejarte seguir :) ¿Es esto posible?Sin fuerza de manejo de excepciones?

Gracias

Respuesta

8

No. C# no lo obliga a manejar excepciones. Esta fue una decisión de diseño consciente por parte de los diseñadores de idiomas.

Para obtener detalles sobre por qué, consulte The Trouble With Checked Exceptions, donde Anders Hejlsberg explica por qué no son parte de C#.

+0

¡Oh, qué lástima :) Gracias por la respuesta! – Johannes

+0

Que, aunque supuestamente es propenso a errores, le da a un programador la libertad de decir "Sé lo que estoy haciendo" –

+0

@Johannes: Antes de que pensaras en esto como "malo", leería esa entrevista. Solía ​​pensar que esto era un defecto en C#, pero me he convertido completamente en ver esto como un "pro" ... –

0

No, no es posible.

Lo que puede hacer es buscar el método de biblioteca .NET que está ejecutando en MSDN: las excepciones que se espera que sean arrojadas por el método están documentadas allí. Luego, puede decidir cuáles quiere capturar y cuáles no desea manejar aquí.

+0

¿No hay mejor manera de buscarlos todos en la documentación? Debería haber alguna posibilidad de hacer esto en VisualStudio si me preguntas :) Algún tipo de "clic con el botón derecho -> se pueden lanzar excepciones que pueden ser explícitas" :) – Johannes

+0

@Johannes: Cierto, eso sería bueno, pero desde el contexto- la ayuda sensible en Visual Studio es bastante buena (solo presiona F1 mientras tienes el cursor sobre el nombre del método), buscar la documentación va bastante rápido. – Heinzi

0

Puede usar various tools para encontrar las excepciones. También hay algo para .NET 4 llamados Contratos de Código que lo ayudan a hacer cumplir las condiciones previas/posteriores y posiblemente evite algunas excepciones.

2

No, no hay excepciones marcadas en C#. Y las razones son bastante simples:

1) que tienden a no lograr el objetivo previsto allí porque no todos sigue la práctica recomendada de cualquiera de manejo de ellos de forma explícita o pasarlos en la cadena. En cambio, lo que sucede es que los desarrolladores los "consumen" en el medio de la pila de desarrollo.
2) ya que son naturalmente parte de la documentación en lugar de código ejecutable, que deberían entrar en documentación, y no el desorden de la superficie de código

3) C#/documentación Marco de herramientas dev son el lugar ideal para tales documentación. Juega con el buscador de objetos del estudio visual, navega hasta el método y los verás mencionados en el panel inferior.