Programação
 › Algoritmo  › C/C++  › Java
Web
 › HTML/XHTML  › JavaScript  › PHP
Sistema Operacional
 › Comandos de DOS  › Windows  › Linux  › Mac/BSD
Office
 › Word / Writer  › Excel / Calc
Áreas do Site
 › Download  › Fórum  › Blog
Recomendamos
Computadores e Informática em Lisboa
TI Expert » Programação » Java » Try, Catch e Finally - Tratamento de Exceções e Erro

Try e Catch

Tratamento de Exceções e Erros

Umas das utilidades proporcionadas pela orientação a objetos de Java é a facilidade em tratar possíveis erros de execução chamados de exceções.

Sempre que um método de alguma classe é passível de causar algum erro, então, podemos usar o método de tentativa - o try.

Tudo que estiver dentro do bloco try será executado até que alguma exceção seja lançada, ou seja, até que algo dê errado.

Quando uma exceção é lançada, ela sempre deve ser capturada. O trabalho de captura da exceção é executado pelo bloco catch.

Um bloco try pode possuir vários blocos de catch, dependendo do número de exceções que podem ser lançadas por uma classe ou método.

O bloco catch obtém o erro criando uma instância da exceção. Portanto, a sintaxe do bloco try catch é:

try {
  // código a ser executado
} catch (ClasseDeExceção instânciaDaExceção) {
  // tratamento da exceção
}

Exceções

As exceções são, na verdade, instâncias de classes. E como qualquer classe ou objeto, podemos facilmente manipular.

Existem métodos comuns entre todas as classes de Exceções, dentre as quais podemos citar:

  • toString(): Converte os dados da exceção para String para visualização.
  • printStackTrace(): Imprime na saída de erro padrão (geralmente console) todos os frames de onde foram detectados erros. Útil para depuração no desenvolvimento, pois mostra todo o histórico do erro, além das linhas onde foram ocasionados.
  • getCause(): Retorna a causa da Exceção, ou null se a causa for desconhecida ou não existir.
  • getMessage(): Retorna uma string com o erro. É uma forma simples e elegante de mostrar a exceção causada, geralmente, utilizada como forma de apresentação ao usuário.

Finally

Finally é o trecho de código final. A função básica de finally é sempre executar seu bloco de dados mesmo que uma exceção seja lançada.

É muito útil para liberar recursos do sistema quando utilizamos, por exemplo, conexões de banco de dados e abertura de buffer para leitura ou escrita de arquivos.

Finally virá após os blocos de catch.

try {
  // código a ser executado
} catch (ClasseDeExceção instânciaDaExceção) {
  // tratamento da exceção
} finally {
  // código a ser executado mesmo que uma exceção seja lançada
}

Abaixo está um exemplo de tratamento de erro ou exceção. Tentaremos atribuir uma string de letras a um objeto inteiro.

Como não é possível atribuir uma string de letras a um objeto inteiro, uma exceção de formato de número é lançada.

public class ExemploDeExcecao {
    public static void main(String[] args) {
        String var = "ABC";
        try {
            Integer i = new Integer(var);
            System.out.println("A variável i vale " + i);
        } catch (NumberFormatException nfe) {
            System.out.println("Não é possível atribuir a string " + var
                    + " a um Objeto Inteiro.\n"
                    + "A seguinte mensagem foi retornada:\n\n"
                    + nfe.getMessage());
        }
    }
}

O código acima apresentará algo como:

Não é possível atribuir a string ABC a um Objeto Inteiro.
A seguinte mensagem foi retornada:

For input string: "ABC"

Perceba que a linha System.out.println("A variável i vale " + i) não foi executada, pois houve um erro na linha anterior. Portanto, apenas a mensagem de tratamento do erro NumberFormatException foi impressa na tela.

Creative Commons License
Autor: Denys William Xavier
Este artigo está sob Licença Creative Commons.

Faça o download da versão em PDF Indique nosso site Gostou?
Indique nosso site!
Este artigo foi
lido 138805 vezes
Bookmark e Compartilhe

Páginas Relacionadas

Nenhuma página relacionada.
Enquete
O Google Chrome OS irá desbancar o Microsoft Windows 7?
» ProgramaçãoAlgorítmo | C/C++ | Java

» WebHTML/XHTML | JavaScript | PHP

» Sistema OperacionalComandos de DOS | Windows | Linux | Mac/BSD

» OfficeWord/Wirter | Excel/Calc

» Áreas do SiteDownloads | Fórum | Blog