Existen excepciones para permitir el manejo de excepciones , que pueden evitar bloqueos pero, en general, evitan comportamientos no deseados o impredecibles del sistema. Por ejemplo, si se agota el tiempo de espera de la conexión de mi programa a una base de datos, generalmente no se bloqueará el sistema, pero si dependiera de los datos de la base de datos, una excepción puede permitirme tratar esta situación sin datos de manera diferente de lo normal.
Digamos que, de manera predeterminada, mi programa muestra una página de datos en función de lo que se devolvió de la base de datos: bueno, no tengo datos. En lugar de presentar una vista desordenada o continuar una operación potencialmente inválida, puedo detectar esta excepción y recurrir a una base de datos diferente, leer datos locales, pedir datos al usuario o devolver el usuario o el sistema a un estado seguro (presumiblemente uno ¡eso no causará inmediatamente la misma excepción!)
Además, en los sistemas donde la entrada del usuario podría ser la causa / solución de un problema, las excepciones pueden permitirle al usuario conocer información detallada y útil sobre el problema. En lugar del demasiado común "Se produjo una excepción no controlada en ..." o "Mensaje de error intimidante directo de SQL", puede decirle al usuario algo útil o al menos comprensible como "No se pudo conectar al recurso B".