Uma exceção em Java é um sinal que alguma condição excepcional aconteceu; Algo de errado aconteceu! Exemplos: solicitação de abertura de um arquivo não encontrado; índice de um array fora de faixa; uma conexão de rede perdida; uma inserção no banco com chave primária repetida;
Conceito Exceções representam erros ocorridos no programa que interrompem o fluxo de execução normal O processo de geração de exceções é chamado de disparo ou lançamento O tratamento de uma exceção disparada é chamado de captura Exceções não capturadas devem ser repassadas
Exceções em Java são objetos; API Java possui diversas classes representando exceções. paradigma Tentar-e-Capturar (try-andcatch), onde, quando um comando puder gerar exceções, o mesmo será tentado (executado) e caso a exceção ocorra, a mesma será capturada;
Error - erros na execução da máquina Virtual Java ou falhas de hardware. Exception - erros na execução do código Java. RuntimeException - erros de "programação". Não é obrigatório o tratamento destas exceções, caso fosse a codificação Java seria muito trabalhosa.
Classificação de Exceções Exceções em Java são classes derivadas da interface Throwable Derivadas dela temos Error e Exception Exceções do tipo Error representam erros internos e término de recursos do JVM As exceções tratadas em nossos programas são do tipo Exception RuntimeException representa erros de lógica Outras exceções representam erros de tratamentos de arquivos, conversões, etc.
Java fornece a seguinte estrutura de comandos: try { Comandos do Try } catch ( TipoDaExceção1 objetodaexceção1 ) { Tratamento da Exceção1 }... { } catch ( TipoDaExceção2 objetodaexceção2 ) { Tratamento da Exceção2 } [finally { Comandos do Finally } onde : 1º Os Comandos do Try serão executados 2º Caso ocorram exceções, o Tratamento da Exceção ocorrida será executado 3º Os Comandos do finally serão executados (sempre)
try {... } catch (ArithmeticException e) { // trata exceções ArithmeticException (subclasse de RuntimeException) } catch (RuntimeException e) { // trata outras exceções RuntimeException (subclasse de Exception) } catch (Exception e) { // trata todas as demais exceções da classe Exception
Os métodos podem lançar exceções; As exceções são identificadas pela palavra chave throws (são as exceções que o método pode lançar); o identificador throw faz o método lançar a exceção;
Vamos usar um mecanismo novo para retornar erros; O retorno normal de valores por um método usa a palavra "return ; O retorno anormal (indicando erro) usa outra palavra reservada: throw; Da mesma forma que "return", "throw" retorna imediatamente do método; Diferentemente de "return", "throw" só retorna objetos especiais chamados exceções; Essa captura é feita com um bloco try-catch.
throws declara que o método pode provocar exceções do tipo declarado (ou de qualquer subtipo); Exemplo public void metodo() throws SQLException {...}
Uma exceção lançada interrompe o fluxo normal do Programa; O fluxo do programa segue a exceção; Se o método onde ela ocorrer não a capturar, ela será propagada para o método que chamar esse método e assim por diante; Se ninguém capturar a exceção, ela irá causar o término da aplicação; Se em algum lugar ela for capturada, o controle pode ser recuperado;
IMPLEMENTANDO UMA EXCEÇÃO Você também pode acrescentar métodos, campos de dados e construtores como em qualquer classe. É comum é criar a classe com dois construtores class NovaExcecao extends Exception { public NovaExcecao () {} public NovaExcecao (String mensagem) { super(mensagem); } } esta implementação permite passar mensagem que será lida através de tostring() e getmessage();