Como e por quê usar um bloco try catch?
Para controlarmos erros dentro dos programas usualmente se realizam testes para garantir certas condições e com isso impedir que os programas sejam "abortados" (abruptamente encerrados).
Por exemplo, ao realizar um divisão esperamos que o divisor seja diferente de zero, caso contrário o programa pode ser encerrado devido ao erro. Se não queremos que a operação de divisão provoque um erro, devemos garantir que o divisor é diferente de zero, assim:
if (divisor!=0) { resultado = dividendo/divisor; }
O if colocado no código permite garantir a necessária condição para a realização da operação, ou melhor, permite dectetar a condição de erro e indicá-la. Embora seja clara a necessidade do teste, o if contamina o código original (a operação de divisão apenas) pois estamos adicionando um teste desnecessário quando tudo está bem (espera-se que a maioria dos casos).
Usamos um bloco try catch para monitorar erros em trechos de código que podem ser problemáticos, sem a necessidade de ifs ou outros testes:
try { resultado = dividendo/divisor; } catch (Exception e) { System.out.println("Divisão por zero"); // outras ações desejadas para controlar o erro }
Note que a operação de divisão em si fica dentro do bloco try, sem necessidade de testes adicionais. No bloco catch podemos especificar o erro que se deseja monitorar, no caso acima todos os possíveis!
Outros usos possíveis e comuns do bloco try catch:
O uso de blocos try catch permite controlar melhor o programa monitorando de forma seletiva uma maior gama de problemas, provendo o tratamento apropriado e evitando o uso de diretivas de teste misturadas ao código original.