En general, el uso de try / catch está en desuso, porque el bloque catch es muy costoso desde el punto de vista de los recursos. El uso de Try / catch me recuerda la gestión de riesgos . La gestión de riesgos tiene dos dimensiones:
- La probabilidad de que ocurra el riesgo
- El daño que puede tener
Ahora, si sales de tu casa, es muy poco probable que un piano caiga sobre tu cabeza en algún lugar (tal vez 0.001%), pero puede matarte.
El manejo de excepciones es así. Intentar bloquear no es caro. Pero catch block es realmente costoso, ya que necesita crear una tabla de seguimiento de pila y hacer otras cosas. Por lo tanto, al tomar una decisión sobre los bloques try / catch, debe considerar cuántas veces probablemente golpee el bloque catch. Si entre 10,000 usos, solo lo golpeas 1 vez, entonces úsalo. Pero si se trata de un formulario, y el usuario probablemente no lo llena correctamente un 50% de las veces, entonces debe evitar poner un bloque try / catch en acción allí.
En lugares donde la probabilidad de ocurrencia de excepción es alta, se recomienda usar if {} else {}
bloques para evitar la ocurrencia de excepción. Por ejemplo, donde desea dividir dos números, en lugar de escribir:
try
{
int result = a/b;
}
catch (DivisionByZeroException ex)
{
// Showing a message here, and logging of course.
}
Deberías escribir:
if (b == 0)
{
int result = a/b;
}
else
{
// Showing a message to user to change the value of b, etc.
}