Diferentes maneiras de imprimir mensagem de exceção em Java

Diferentes maneiras de imprimir mensagem de exceção em Java

Nesta seção, aprenderemos como imprimir mensagens de exceção em Java usando diferentes métodos de Java lançável aula . A classe Throwable fornece os três métodos a seguir para imprimir a mensagem de exceção:

  • Usando o método printStackTrace
  • Usando o método getMessage()
  • Usando o método toString()
Diferentes maneiras de imprimir mensagem de exceção em Java

Vamos discutir um por um em detalhes.

Usando o método printStackTrace()

O printStackTrace() método está definido no Arremessável classe que pertence ao pacote java.lang. O método imprime o nome, descrição (como / por zero ), e a rastreamento de pilha (número da linha e nome da classe onde a exceção foi gerada) de uma exceção. O rastreamento de pilha rastreia onde ocorre a próxima exceção. É amplamente utilizado para imprimir a mensagem de exceção.

Existem três versões do método printStackTrace():

Sintaxe Descrição
printStackTrace() O método imprime esse lançamento e seu backtrace no fluxo de erro padrão.
public void printStackTrace(PrintStreams) O método imprime throwable e seu backtrace para o fluxo de impressão especificado.
public void printStackTrace(PrintWriters) O método imprime throwable e seu backtrace para o gravador de impressão especificado.

Para entender o conceito do método printStackTrace(), primeiro, criaremos um Java programa que gerou uma exceção de divisão por zero. Neste programa, não usaremos o método printStackTrace() para imprimir a exceção.

PrintExceptionMessage1.java

 public class PrintExceptionMessage1 { //user defined method public static void divide() { try { //raised divide by zero exception int a = 100/0; } catch (Exception e) { //prints exception message System.out.println(e); } } //main() method public static void main(String args[]) { //calling user defined method divide(); } }  

Quando executamos o programa acima, obtemos um exceção aritmética e a seguinte mensagem é impressa no console:

Diferentes maneiras de imprimir mensagem de exceção em Java

Na mensagem acima, não podemos apontar qual linha lança uma exceção. Portanto, é difícil descobrir onde ocorrem exceções. Para superar esse problema usamos o método printStackTrace(). Vamos usar o método printStackTrace() em um programa Java.

PrintExceptionMessage2.java

 public class ExceptionExample2 { //user defined method public static void divide() { try { //raised divide by zero exception int a = 100/0; } catch (Exception e) { //prints exception message and detail of the exception e.printStackTrace(); } } //main() method public static void main(String args[]) { //calling user defined method divide(); } }  

Vamos executar o programa acima.

Diferentes maneiras de imprimir mensagem de exceção em Java

A mensagem de exceção acima mostra claramente qual método gerou uma exceção, qual é o tipo de exceção e qual linha lança uma exceção.

A primeira linha da mensagem mostra que o programa lança um java.lang.ArithmeticException (divida por zero). A segunda linha mostra que as exceções ocorrem na linha 9 e o método divide() lança uma exceção. A terceira linha mostra essa exceção na linha vinte e um . O método main() também lança uma exceção porque o método divide() é chamado dentro do método main(). Portanto, usando o printStackTrace() método, podemos facilmente apontar o localização exata da exceção.

Usando o método getMessage()

O getMessage() método também é definido no Arremessável classe que pertence ao pacote java.lang. O método imprime apenas a mensagem de uma exceção. Não imprime o nome da exceção nem a descrição. É amplamente utilizado para imprimir a mensagem de exceção.

Sintaxe:

 public String getMessage();  

Ele retorna a string da mensagem detalhada desta instância Throwable. Pode ser nulo.

Vamos usar o método getMessage() em um programa Java.

PrintExceptionMesssage3.java

 public class PrintExceptionMessage3 { public static void main(String args[]) { try { int a = 100/0; } catch (Exception e) { //prints only the message of the exception System.out.println(e.getMessage()); //use the following statement if you want to print name of the exception and which exception thrown //System.out.println(e); } } }  

Vamos executar o programa acima.

Diferentes maneiras de imprimir mensagem de exceção em Java

Observamos que ele imprime apenas a exceção. Portanto, não é amplamente utilizado porque não imprime a descrição detalhada de uma exceção.

Usando o método toString()

O para sequenciar() método do Arremessável classe substitui o para sequenciar() método da classe Object. Ele imprime a breve descrição de uma exceção. Ele não mostra as outras informações (como nome da exceção e rastreamento de pilha). Não é amplamente utilizado para imprimir a mensagem de exceção.

Vamos usar o método toString() em um programa Java.

PrintExceptionMessage4.java

 public class PrintExceptionMessage4 { public static void main(String args[]) { try { int a = 100/0; } catch (Exception e) { //we can use either of the statement to print the exception message //both prints the same message System.out.println(e.toString()); //System.out.println(e); } } }  

Vamos executar o programa acima.

Diferentes maneiras de imprimir mensagem de exceção em Java

Na mensagem acima, observamos que ela imprime apenas o nome e o tipo da exceção. Não indica em qual linha ocorreu a exceção.

Vimos as diferentes maneiras de imprimir a mensagem de exceção em Java. Sugerimos que você utilize o printStackTrace() método porque aponta para o local onde ocorre uma exceção.