Utilizando tratamento de exceções em java
O principal objetivo deste artigo é explicar de forma simples e compacta o tratamento de exceção em java.
Parte 4: Comando throw e throws
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:
Exemplo:
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:
Exemplo:
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:
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);
}
}
}
*
* @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);
}
...
}
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);
}
}
}
*
* @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:
Você poderia falar um pouco sobre a criação de sua própria classe de exceção?