30.06.2013 Views

Apostila Java

Apostila Java

Apostila Java

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

TRATAMENTO DE EXCEÇÕ ES<br />

as exceções possíveis quando o correto comportamento de um programa depende do usuário,<br />

mas tratar o maior número possível dessas exceções é uma obrigação do bom programador.<br />

se os métodos de um programa tratarem todas as exceções possíveis, dizemos que o programa é<br />

robusto. Evidentemente, nem sempre é possível prevenir todas as exceções, mas o grau de robusteza de<br />

um código tem uma relação direta com a qualidade desse código. O programador deve sempre<br />

programar pensando em "quanto mais robusto melhor".<br />

Tratamento pendente de exceções<br />

Caso um método possa gerar uma exceção, esse método deve deixar claro o tipo de ação que deve ser<br />

tomada para contornar essa exceção.<br />

Existem duas formas de fazer isso: um bloco try-catch, conforme visto anteriormente ou então a simples<br />

sinalização das exceções, deixando o seu tratamento para fora do trecho de código que gerou essa<br />

exceção.<br />

Para não misturar o tratamento de exceções com a lógica de um programa, uma técnica muito utilizada é<br />

a declaração de métodos com exceções pendentes, ou seja, cujo tratamento deverá ser feito pelo<br />

programa que chamar esse método.<br />

Em <strong>Java</strong>, essa pendência do tratamento de uma exceção é definida pela palavra reservada throws:<br />

// A palavra reservada throws é seguida pela lista de exceções que podem<br />

// ocorrer na execução do código do método. Esse método só poderá ser<br />

// chamado de dentro de um bloco try-catch, pois a pendência deverá ser<br />

// tratada no código que está chamando esse método.<br />

public void relatorio(int indice) throws ArrayIndexOutOfBoundsException<br />

{<br />

// A vantagem do tratamento de exceções pendentes é que o código dos<br />

// métodos fica restrito à lógica do programa.<br />

System.out.println(alunos[indice]);<br />

}<br />

Exceções implementadas pelo programador<br />

Como as exceções em <strong>Java</strong> são instâncias de alguma subclasse de Throwable, é possível implementar<br />

outras classes estendidas de Throwable ou de uma de suas subclasses. Essas subclasses<br />

implementadas pelo programador serão igualmente exceções.<br />

Tal qual vimos na aula 11, usaremos a palavra reservada extends para implementarmos novas exceções:<br />

public class AlunoInexistente extends Exception<br />

{<br />

// Esse método sobrecarrega o método homônimo da classe Exception<br />

public String getMessage()<br />

{<br />

return "indice do aluno não existe";<br />

}<br />

}<br />

77

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!