Throws
class Count { public static void main(String args[]) throws java.io.IOException { int count = 0; while (System.in.read() != -1) count++; System.out.println("Entrada:"+count+ "caracteres."); } }
Throw
throw new Exception("Ocorreu uma excecao ");
try { //bloco de codigo que pode levantar excecoes } catch (umaExcecao e1) { //captura excecoes que sejam do tipo umaExcecao //tambem captura excecoes que herdem de umaExcecao } catch (outraExcecao e2) { //captura excecoes que sejam do tipo outraExcecao //ou que sejam subclasses de outraExcecao ) catch (maisUmaExcecao e3) { //um try pode conter tantas clausulas catch //quanto for preciso } finally { //este trecho de codigo sempre sera executado, //independentemente do que tenha ocorrido no try. }
Podemos utilizar a cláusula finally para agrupar ações "de limpeza" ou que devam ser executadas independentemente da ocorrência de exceções.
public void meuMetodoDeEscrita (File arquivo) { try { f = new FileOutputStream(arquivo); ... //usando finally nao precisamos //fechar o arquivo aqui, } catch (ArrayIndexOutOfBoundException e1) { ... //aqui } catch (NullPointerException e2) ... //e aqui } catch (IOException e3) { throw e3 //a excecao e3 eh re-levantada } finally { if (f != NULL) { System.out.println ("Fechando o arquivo..."); f.close(); //basta fecha-lo aqui! } else System.out.println ("Erro: escrita abortada."); } }