Duplicar posibles:
Do try/catch blocks hurt performance when exceptions are not thrown?Prueba ... ¿Los bloques de captura siempre son caros?
Hola a todos, Sólo una pregunta rápida sobre try..catch bloques. He oído que son caros de usar y no deben usarse como parte del flujo de un programa. Sin embargo, para validar las direcciones de correo electrónico, estoy usando el siguiente código.
try
{
MailAddress checkEmail = new MailAddress(testEmail);
return true;
}
catch
{
return false;
}
Debido a la validación previa, no tengo que capturar muchas excepciones a menos que sea un intento de eludir la validación. Mi pregunta es, ¿lo intentan? Los bloques de captura solo son caros si se detecta una excepción, o ¿es siempre caro independientemente de si se produce alguna excepción?
Gracias
EDIT: Gracias por todas las respuestas. He decidido que, dado que la verificación (en C#) no es muy costosa, me quedaré con este método. Se debe principalmente a que se produce una excepción real, ya que existen pasos de validación previos que aseguran que nadie ingrese accidentalmente una dirección de correo electrónico no válida.
Una gran pregunta. – stone
Usted dice que la excepción nunca debe ocurrir, y si lo hace, es el resultado de alguien que intenta eludir sus mecanismos de seguridad. ¿Parece sabio comer la excepción y seguir alegremente, ahora que sabes que hay un atacante suelto en el sistema? Dejaría que la excepción saltara a la persona que llama y * detenga el programa *. Cuando notes que hay un tipo hostil con un hacha que ha pasado por alto la seguridad de tu edificio y él activa una alarma, * suena la alarma * y convoca la seguridad; ¡no apagas la alarma automáticamente! –
Hola Eric. Mi código real es significativamente más grande que esto. Monitorea al usuario, registra datos y bloquea el acceso. Simplemente mostré una llamada de ejemplo que estaba haciendo para ver si era o no una manera eficiente de hacer las cosas :) – Skoder