Podría jurar que hubo una pregunta como esta hace unos días, pero no puedo encontrarla ...
Es poco probable que agregar un bloque try/catch modifique notablemente el rendimiento cuando no se lanzan excepciones, aunque puede evitar que un método se inserte. (Las diferentes versiones de CLR tienen reglas diferentes en torno a la alineación; no recuerdo los detalles.)
El gasto real se produce cuando se emite una excepción, e incluso ese gasto suele ser exagerado. Si utiliza excepciones apropiadamente (es decir, solo en situaciones de error realmente excepcionales o inesperadas), entonces es poco probable que sean un golpe de rendimiento significativo, excepto en los casos en que su servicio está demasiado regado para considerarse "funcional".
En cuanto a si debe usar bloques de prueba/captura tanto como sea posible - ¡absolutamente no! Por lo general, solo debe detectar una excepción si realmente puede manejar , lo cual es relativamente raro. En particular, solo tragar una excepción es casi siempre lo que no debe hacer.
Escribo muchos más bloques try/finally (de hecho, casi siempre a través de using
declaraciones) que try/catch blocks. Try/catch es a veces apropiado en el nivel superior de una pila, de modo que un servicio puede seguir procesando la próxima solicitud, incluso si falla, pero de lo contrario raramente capturo excepciones. A veces vale la pena detectar una excepción para envolverla en una excepción diferente, básicamente traducir la excepción en lugar de manejarla realmente.
http://stackoverflow.com/questions/164613/why-are-try-blocks-expensive http://stackoverflow.com/questions/2075151/try-catch-blocks-always-expensive-closed – Greg
Duplicado [ muchas, muchas veces más) (http://stackoverflow.com/search?q= [c% 23] + exception + performance). Busque primero, por favor. –
probablemente el * mejor * duplicado de ellos: http://stackoverflow.com/questions/1308432/do-try-catch-blocks-hurt-performance-when-exceptions-are-not-thrown – x4u