Você está na página 1de 1

Exceptions servem para sinalizar condies anormais da execuo de um programa.

Errors, por outro lado, so condies irrecuperveis, que no tem como seu programa se safar (por exemplo, falta de memria). Por exemplo, vamos supor que voc v criar um mtodo: String leArquivo(File arquivo); O que fazer quando o arquivo no existir? H duas possibilidades. A primeira, usada no C e C++, retornar um cdigo de erro. A segunda, lanar uma FileNotFoundException. O cdigo de erro tem vrios problemas. Primeiro de tudo, ele no interrompe o fluxo do mtodo. Voc teria que interrompe-lo por sua prpria conta. O segundo, que o cdigo pode no ficar suficientemente claro. Finalmente, voc obrigado a retornar esse cdigo de erro em algum lugar, e como funes geralmente s aceitam um nico valor de retorno, ou o retorno normal (nesse caso o contedo do arquivo), ou o cdigo de erro teriam de ser passados por referncia. O bloco try, catch, serve para verificarmos se uma exceo ocorreu e colocarmos algum tipo de tratamento. Por exemplo: view plaincopy to clipboardprint? 1. public void imprimirArquivo(File file) { 2. try { 3. String arq = leArquivo(file); 4. System.out.println(arq); 5. } catch (FileNotFoundException e) { 6. System.out.println("O arquivo no foi encontrado!"); 7. } 8. }

Esse cdigo informa ao usurio a mensagem "O arquivo no foi encontrado!", caso o arquivo no esteja presente. Note algumas coisas interessantes: 1. Se o arquivo for encontrado, seu contedo exibido no println, e a mensagem de erro no ser exibida. 2. Se o arquivo no for encontrado, o mtodo leArquivo lancar a exceo. O cdigo desvia imediatamente para o catch() e, portanto, o System.out.println(arq) no exibido. 3. Se removermos o try...catch, o println ainda no seria exibido. O java automaticamente jogaria a exceo para quem chamou a funo imprimirArquivo. Isso mais difcil de se fazer se tivssemos retornado um cdigo de erro. No caso do Java, existe uma vantagem adicional em se usar excees. Toda exceo contm a stack trace, ou seja, um texto contendo o local exato de onde o erro ocorreu. O Java tambm suporta dois tipos de excees, checked e unchecked. A diferena que o programador obrigado a ter um try...catch para a primeira ou passa-la adiante, enquanto no caso da segundo tipo opcional. Finalmente, em alguns casos, necessrio fazer uma finalizao, ocorrendo ou no um erro. Para esses casos, voc pode usar um finally, associado ao seu bloco try...catch. Para mais informaes veja o textos: http://java.sun.com/docs/books/tutorial/essential/exceptions/ http://blog.caelum.com.br/2006/10/07/lidando-com-exceptions/

Você também pode gostar