12.07.2015 Views

k19-k11-orientacao-a.. - Departamento de Sistemas e Computação

k19-k11-orientacao-a.. - Departamento de Sistemas e Computação

k19-k11-orientacao-a.. - Departamento de Sistemas e Computação

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

EXCEPTIONSC A P Í T U L O14Como erros po<strong>de</strong>m ocorrer durante a execução <strong>de</strong> uma aplicação, <strong>de</strong>vemos <strong>de</strong>finir como elesserão tratados. Tradicionalmente, códigos <strong>de</strong> erro são utilizados para lidar com falhas na execução<strong>de</strong> um programa. Nesta abordagem, os métodos <strong>de</strong>volveriam números inteiros para indicar o tipo<strong>de</strong> erro que ocorreu.1 int <strong>de</strong>posita ( double valor ) {2 if( valor < 0) {3 return 107; // código <strong>de</strong> erro para valor negativo4 } else {5 this . saldo += valor ;6 return 0; // sucesso7 }8 }Código Java 14.1: Utilizando códigos <strong>de</strong> erroUtilizar códigos <strong>de</strong> erro exige uma vasta documentação dos métodos para explicar o que cada códigosignifica. Além disso, esta abordagem “gasta” o retorno do método impossibilitando que outrostipos <strong>de</strong> dados sejam <strong>de</strong>volvidos. Em outras palavras, ou utilizamos o retorno para <strong>de</strong>volver códigos<strong>de</strong> erro ou para <strong>de</strong>volver algo pertinente a lógica natural do método. Não é possível fazer as duascoisas sem nenhum tipo <strong>de</strong> “gambiarra”.1 ??? geraRelatorio () {2 if (...) {3 return 200; // código <strong>de</strong> erro tipo14 } else {5 Relatorio relatorio = ...6 return relatorio ;7 }8 }Código Java 14.2: Código <strong>de</strong> erro e retorno lógicoObserve que no código do método geraRelatorio() seria necessário <strong>de</strong>volver dois tipos <strong>de</strong> dadosincompatíveis: int e referências <strong>de</strong> objetos da classe Relatorio. Porém, não é possível <strong>de</strong>finirdois tipos distintos como retorno <strong>de</strong> um método.A linguagem Java tem uma abordagem própria para lidar com erros <strong>de</strong> execução. Na abordagemdo Java não são utilizados códigos <strong>de</strong> erro ou os retornos lógicos dos métodos.Errors vs ExceptionsO primeiro passo para enten<strong>de</strong>r a abordagem do Java para lidar com os erros <strong>de</strong> execução é saberclassificá-los. A classe Throwable mo<strong>de</strong>la todos os tipos <strong>de</strong> erros <strong>de</strong> execução.www.<strong>k19</strong>.com.br 127

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

Saved successfully!

Ooh no, something went wrong!