Imagine uma situação que não é desejado que uma exceção seja tratada na própria classe ou método, mas sim em outro que venha a lhe chamar. Para solucionar tal situação utilizamos o comando
throws na assinatura do método com a possível exceção que o mesmo poderá a vir lançar.
Sintaxe:
tipo_retorno nome_metodo() throws tipo_exceção_1, tipo_exceção_2, tipo_exceção_n
{
...
}
Exemplo:
/***
*
* @author Robson Fernando Gomes
*
*/
public class TesteString {
private static void aumentarLetras() throws NullPointerException //lançando exceção
{
String frase = null;
String novaFrase = null;
novaFrase = frase.toUpperCase();
System.out.println("Frase antiga: "+frase);
System.out.println("Frase nova: "+novaFrase);
}
public static void main(String args[])
{
try
{
aumentarLetras();
}
catch(NullPointerException e)
{
System.out.println("Ocorreu um NullPointerException ao executar o método aumentarLetras() "+e);
}
}
}
Neste exemplo será lançada uma exceção no método
aumetarLetras():
"private static void aumentarLetras() throws NullPointerException "
E o mesmo será tratado no método
main():
...
try
{
aumentarLetras();
}
catch(NullPointerException e)
{
System.out.println("Ocorreu um NullPointerException ao executar o método aumentarLetras() "+e);
}
...
Saída:
Ocorreu um NullPointerException ao executar o método aumentarLetras() java.lang.NullPointerException
Agora imagine o caso que seja necessário lançar uma exceção padrão ao invés uma especifica, para resolver este problemas utilizamos o comando
throw dentro do bloco do
catch que desejamos converter a exceção.
Sintaxe:
try{
...
}
catch(tipoExcessão_1 e)
{
throw new novoTipoExceçao(e);
}
Exemplo:
/***
*
* @author Robson Fernando Gomes
*
*/
public class TesteString {
private static void aumentarLetras() throws Exception //lançando exceção
{
String frase = null;
String novaFrase = null;
try{
novaFrase = frase.toUpperCase();
}catch(NullPointerException e)
{
throw new Exception(e);
}
System.out.println("Frase antiga: "+frase);
System.out.println("Frase nova: "+novaFrase);
}
public static void main(String args[])
{
try
{
aumentarLetras();
}
catch(Exception e)
{
System.out.println("Ocorreu uma exceção ao executar o método aumentarLetras() "+e);
}
}
}
Neste exemplo será lançado um
NullPointerException e o mesmo será convertido para
Exception e relançado como Exception no método
aumentarLetras() e por final o mesmo é tratado no método
main().
Saída:
Ocorreu uma exceção ao executar o método aumentarLetras() java.lang.Exception: java.lang.NullPointerException.
Fonte: