Captura de exce es
Exceções são lançadas de dentro de métodos. Para entender como capturar a exceção temos que entender com usar as diretivas try-catch-finally. Na realidade estamos falando de 3 blocos diferentes try-cacth, try-finally e try-catch-finally.
Try-Catch
Esta é a forma mais usada. Todas as chamadas a métodos que sabemos que podem lançar exceções colocamos dentro de chaves com a palavra reservada try antes. Isso significa o seguinte: "JVM, tenta executar o seguinte código. Se uma exceção acontecer em qualquer método deixa-me tratá-la."
Uma vez capturada temos que dar tratamento à exceção, ou seja, fazer alguma coisa para resolver o problema que ela representa, ou tomar ações alternativas. O código para fazer isso colocamos dentro de chaves com a palavra reservada catch atrás.
Muitos tipos de exceções podem ser lançadas e nem sempre o mesmo código de tratamento serve para todos os tipos. Para informar qual o tipo de exceção que o código se destina a resolver colocamos uma declaração a seguir ao catch que indica o tipo de exceção que podemos tratar naquele código. O tipo é definido declarando uma classe especifica. Essa classe pode ser qualquer uma que herde direta ou indiretamente de Throwable.
Exemplo de uso do bloco try-catch
1.try {
2. // aqui executamos um, ou mais, métodos
3. // que podem lançar exceções.
4.}catch (Throwable e) {
5. // aqui a exceção aconteceu e tentamos evitar o problema
6. // fazendo a operação de modo diferente
7.}
Podemos declarar mais do que um bloco catch. Isso é importante porque podemos ter vários tipos diferentes de exceção sendo lançados e necessitar de um tratamentos especifico para cada um. Por outro lado, não é sensato usarThrowable para definir a classe a ser capturada. Isso significa que queremos capturar todos os tipos de exceção. Como vimos, não há muito o que fazer quando acontece um erro. Por isso não estamos normalmente interessados em capturar exceções do tipo de Error. Eis um exemplo mais realista