Uma exceção ocorre quando uma situação anormal (como um erro ou problema) ocorre que um método é incapaz de lidar. O método sai por "jogar " uma exceção , comunicando à função de chamada que o método terminou de forma anormal, e passando para trás informações sobre as condições da situação. Esta informação está contida no objeto de exceção lançada de volta para a função de chamada. Exceções básicas
Java oferece três tipos básicos de exceções: . Exceções verificadas , erros e exceções de tempo de execução
exceções verificadas são jogados para os problemas esperados que podem ser razoavelmente tratadas , como um pedido para um arquivo inexistente . As exceções verificadas devem ser capturados e manipulados por um ou outro a função de chamada ou jogado até uma função de chamada superior. Este requisito é referido como o " requisito travar ou Especificar . " Todas as exceções verificadas são derivadas do Exception classe.
Erros são lançada quando um erro grave externo para a aplicação ocorre que não podem ser razoavelmente tratado , como erros de memória e de estouro de pilha . Todos os erros são derivados da classe Error.
Runtime exceções são lançadas quando um erro grave dentro do aplicativo ocorre que não podem ser razoavelmente tratado , como argumentos ilegais e parâmetros. Todas as exceções de tempo de execução são derivadas da classe RuntimeException .
Erros e exceções de tempo de execução são as duas exceções não verificadas . Exceções não verificadas não estão sujeitos à captura ou Especificar exigência, porque não se espera recuperação graciosa contra esses tipos de exceções.
Classes de exceção , Error e RuntimeException são todas derivadas da classe Throwable . De Throwable , essas classes herdam funções úteis para a comunicação e depuração de erros. Por exemplo, getMessage retorna a mensagem de erro legível associado com a exceção , e printStackTrace imprime informações detalhadas para um córrego ou gravador especificado. Você pode criar suas próprias exceções especializadas herdando de Exception , RuntimeException ou suas subclasses.
Exceções especiais
Java oferece inúmeras classes de exceção derivadas das classes básicas . Exceções especializadas podem oferecer funções adicionais para recuperação de informações pormenorizadas e específicas para a situação. Por exemplo , as funções de conectividade de banco de dados Java pode lançar uma SQLException . Essa exceção especializada tem funções para recuperar informações sobre o estado de SQL e código de erro específico do fornecedor relacionada com a exceção. . Captura e tratamento de exceções específicas permite acessar uma riqueza de informações adicionais não disponíveis se você só pegar e tratar as exceções genéricas de classe pai
Tratamento de exceções : try, catch Finalmente
Utilize try, catch e finally blocos para capturar e manipular exceções. Coloque o código que pode lançar uma exceção no bloco try . Fornecer um bloco catch para tratar cada exceção possível , com instruções para lidar com a exceção com base no tipo de exceção e as informações a exceção proporciona. Manuseio da exceção poderia envolver alertando o usuário sobre o erro , solicitando a entrada do usuário correto, automaticamente recuperar do erro ou lançar uma exceção para um nível superior. Código no bloco finalmente sempre executado quando o bloco try é encerrado , se saiu normalmente ou uma exceção foi pego.
Neste exemplo simples, a aplicação tenta abrir um arquivo e processá-lo . Se uma exceção é detectada , algumas informações exceção é impresso , ea execução continua. Finalmente, a aplicação limpa , fechando o fluxo de arquivos , se necessário
FileReader fr = null; . Try { fr = new FileReader ( " myfile.txt "); ... (código para ler e processar o arquivo ) ...} catch ( FileNotFoundException ex) { System.out.println ( ex.getMessage ()); } catch (IOException ex) { System.out.println ( ex.getMessage () );} finally { if ( fr = null) fr.close (); ! }
exceções Jogando
Para lançar exceções de uma função , especifique isso usando o cláusula throws na declaração da função , fornecendo uma lista de exceções que podem ser lançadas . Por exemplo :
vazio getData ( ) throws IOException , FileNotFoundException {
Uma exceção é lançada com uma declaração "jogar " . A exceção capturado ou criado pode ser acionada. Por exemplo :
vazio getData () lança SomeOtherException , FileNotFoundException { FileReader fr = null; try { fr = new FileReader ( " myfile.txt "); ... (código para ler e processar o arquivo ) ...} catch ( FileNotFoundException ex) {throw ex ; } catch (IOException ex) { throw new SomeOtherException ( ex) ;} finally { if ( fr = null !) fr.close ( );}}