Existem exceções para permitir o tratamento de exceções , o que pode evitar falhas, mas geralmente impede o comportamento indesejado ou imprevisível do sistema. Por exemplo, se a conexão do meu programa com um banco de dados atingir o tempo limite, geralmente ele não trava o sistema, mas se eu estivesse dependendo dos dados do banco de dados, uma exceção poderia me permitir tratar essa situação sem dados de maneira diferente do normal.
Digamos que, por padrão, meu programa exibe uma página de dados com base no que foi retornado do banco de dados - bem, porcaria, não tenho dados. Em vez de apresentar uma visão confusa ou continuar uma operação potencialmente inválida, posso capturar essa exceção e retornar a um banco de dados diferente, ler dados locais, solicitar dados ao usuário ou retornar o usuário ou sistema a um estado seguro (presumivelmente um que não causará imediatamente a mesma exceção!)
Além disso, em sistemas em que a entrada do usuário pode ser a causa / solução de um problema, as exceções podem permitir que o usuário saiba informações detalhadas e úteis sobre o problema. Em vez da muito comum "Ocorreu uma exceção não tratada em ..." ou "Intimidando mensagem de erro diretamente do SQL", você pode dizer ao usuário algo útil ou pelo menos compreensível, como "Não foi possível conectar ao recurso B."