I det här avsnittet kommer vi att lära oss hur man skriver ut undantagsmeddelanden i Java genom att använda olika metoder för Java kastbar klass . Klassen Throwable tillhandahåller följande tre metoder för att skriva ut undantagsmeddelandet:
- Använder metoden printStackTrace
- Använder metoden getMessage().
- Använder metoden toString().
Låt oss diskutera en efter en i detalj.
Använder metoden printStackTrace()
De printStackTrace() metod definieras i Kastbar klass som tillhör java.lang-paketet. Metoden skriver ut namn, beskrivning (Till exempel / med noll ), och den stack spår (radnummer och klassnamn där undantaget uppstår) av ett undantag. Stackspårningen spårar var nästa undantag inträffar. Det används ofta för att skriva ut undantagsmeddelandet.
Det finns tre versioner av metoden printStackTrace():
udp-protokoll
Syntax | Beskrivning |
---|---|
printStackTrace() | Metoden skriver ut denna kastbara och dess bakåtspårning till standardfelströmmen. |
public void printStackTrace(PrintStream s) | Metoden skriver ut kastbara och dess backspårning till den angivna utskriftsströmmen. |
public void printStackTrace(PrintWriter s) | Metoden skriver ut kastbara och dess bakåtspårning till den angivna utskriftsskrivaren. |
För att förstå konceptet med metoden printStackTrace() kommer vi först att skapa en Java program som höjde ett undantag med dela med noll. I det här programmet kommer vi inte att använda metoden printStackTrace() för att skriva ut undantaget.
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(); } }
När vi kör programmet ovan får vi en aritmetiskt undantag och följande meddelande skrivs ut på konsolen:
I meddelandet ovan kan vi inte peka ut vilken linje som ger ett undantag. Så det är svårt att hitta var undantag förekommer. För att övervinna detta problem använder vi metoden printStackTrace(). Låt oss använda metoden printStackTrace() i ett Java-program.
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(); } }
Låt oss köra programmet ovan.
Ovanstående undantagsmeddelande visar tydligt vilken metod som har skapat ett undantag, vilken typ av undantag som är och vilken linje som ger ett undantag.
Den första raden i meddelandet visar att programmet kastar en java.lang.ArithmeticException (diva med noll). Den andra raden visar att undantag förekommer vid linjen 9 och metoden divide() ger ett undantag. Den tredje raden visar det undantaget vid raden tjugoett . Main()-metoden ger också ett undantag eftersom divide()-metoden anropas inuti main()-metoden. Därför använder du printStackTrace() metod kan vi enkelt peka ut exakt plats av undantaget.
Använder metoden getMessage().
De getMessage() Metoden definieras också i Kastbar klass som tillhör java.lang-paketet. Metoden skriver bara ut meddelandet om ett undantag. Den skriver varken namnet på undantaget eller beskrivningen. Det används ofta för att skriva ut undantagsmeddelandet.
java sträng av array
Syntax:
public String getMessage();
Den returnerar detaljmeddelandesträngen för denna Throwable-instans. Det kan vara null.
Låt oss använda metoden getMessage() i ett Java-program.
PrintExceptionMessage3.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); } } }
Låt oss köra programmet ovan.
Vi observerar att den bara skriver ut undantaget. Så det används inte i stor utsträckning eftersom det inte skriver ut den detaljerade beskrivningen av ett undantag.
Använder metoden toString().
De att stränga() metod för Kastbar klass åsidosätter att stränga() metod för klassen Object. Den skriver ut en kort beskrivning av ett undantag. Den visar inte annan information (som undantagsnamn och stackspårning). Det används inte ofta för att skriva ut undantagsmeddelandet.
Låt oss använda metoden toString() i ett Java-program.
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); } } }
Låt oss köra programmet ovan.
I meddelandet ovan ser vi att det bara skriver ut namnet och typen av undantaget. Den anger inte vid vilket linjeundantag som har inträffat.
java array skiva
Vi har sett de olika sätten att skriva ut undantagsmeddelandet i Java. Vi föreslår att du använder printStackTrace() metod eftersom den pekar på platsen där ett undantag inträffar.