En aquest apartat, aprendrem com imprimir missatges d'excepció a Java utilitzant diferents mètodes de la Java Throwable classe. La classe Throwable proporciona els tres mètodes següents per imprimir el missatge d'excepció:
- Utilitzant el mètode printStackTrace
- Utilitzant el mètode getMessage().
- Utilitzant el mètode toString().
Parlem un per un amb detall.
Utilitzant el mètode printStackTrace().
El printStackTrace() mètode es defineix a la Llançable classe que pertany al paquet java.lang. El mètode imprimeix el nom, descripció (tal com / per zero ), i la traça de pila (número de línia i nom de classe on es produeix una excepció) d'una excepció. La traça de la pila rastreja on es produeix la següent excepció. S'utilitza àmpliament per imprimir el missatge d'excepció.
Hi ha tres versions del mètode printStackTrace():
decodificació javascript base64
Sintaxi | Descripció |
---|---|
printStackTrace() | El mètode imprimeix aquest llançament i la seva traça inversa al flux d'error estàndard. |
public void printStackTrace(PrintStream s) | El mètode imprimeix throwable i la seva traça inversa al flux d'impressió especificat. |
public void printStackTrace(PrintWriter s) | El mètode imprimeix throwable i la seva traça enrere a l'escriptor d'impressió especificat. |
Per entendre el concepte del mètode printStackTrace(), primer, crearem un Java programa que va generar una excepció de divisió per zero. En aquest programa, no utilitzarem el mètode printStackTrace() per imprimir l'excepció.
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(); } }
Quan executem el programa anterior, obtenim un excepció aritmètica i el missatge següent s'imprimeix a la consola:
Al missatge anterior, no podem assenyalar quina línia genera una excepció. Per tant, és difícil trobar on es produeixen excepcions. Per superar aquest problema utilitzem el mètode printStackTrace(). Utilitzem el mètode printStackTrace() en un 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(); } }
Executem el programa anterior.
El missatge d'excepció anterior mostra clarament quin mètode ha generat una excepció, quin tipus d'excepció és i quina línia genera una excepció.
La primera línia del missatge mostra que el programa llança a java.lang.ArithmeticException (divideix per zero). La segona línia mostra que es produeixen excepcions a la línia 9 i el mètode divide() llança una excepció. La tercera línia mostra aquesta excepció a la línia 21 . El mètode main() també genera una excepció perquè el mètode divide() s'anomena dins del mètode main(). Per tant, utilitzant el printStackTrace() mètode, podem assenyalar fàcilment el ubicació exacta de l'excepció.
Utilitzant el mètode getMessage().
El getMessage() mètode també es defineix a la Llançable classe que pertany al paquet java.lang. El mètode només imprimeix el missatge d'una excepció. No imprimeix el nom de l'excepció ni la descripció. S'utilitza àmpliament per imprimir el missatge d'excepció.
Sintaxi:
public String getMessage();
Retorna la cadena de missatge de detall d'aquesta instància Throwable. Pot ser nul·la.
munt d'ordenació
Utilitzem el mètode getMessage() en un 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); } } }
Executem el programa anterior.
Observem que només imprimeix l'excepció. Per tant, no s'utilitza àmpliament perquè no imprimeix la descripció detallada d'una excepció.
Utilitzant el mètode toString().
El toString() mètode de la Llançable classe anul·la la toString() mètode de la classe Object. Imprimeix la descripció breu d'una excepció. No mostra l'altra informació (com el nom de l'excepció i el rastre de la pila). No s'utilitza àmpliament per imprimir el missatge d'excepció.
llenguatge informàtic genial
Utilitzem el mètode toString() en un 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); } } }
Executem el programa anterior.
En el missatge anterior, observem que només imprimeix el nom i el tipus de l'excepció. No assenyala a quina excepció de línia s'ha produït.
Hem vist les diferents maneres d'imprimir el missatge d'excepció en Java. Us suggerim que utilitzeu printStackTrace() mètode perquè apunta a la ubicació on es produeix una excepció.