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, catch e finally
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.");
}
}