Tässä osiossa opimme kuinka tulostaa poikkeusviestejä Javassa käyttämällä erilaisia menetelmiä Java heitto luokkaa. Throwable-luokka tarjoaa seuraavat kolme tapaa tulostaa poikkeusviesti:
- PrintStackTrace-menetelmän käyttäminen
- Käytä getMessage()-menetelmää
- ToString()-menetelmän käyttäminen
Keskustellaan yksitellen yksityiskohtaisesti.
PrintStackTrace()-menetelmän käyttäminen
The printStackTrace() menetelmä on määritelty kohdassa Heitettävä luokka, joka kuuluu java.lang-pakettiin. Menetelmä tulostaa nimi, kuvaus (kuten / nollalla ), ja pinon jälki (rivin numero ja luokan nimi, jos poikkeus on esitetty) poikkeuksesta. Pinojäljitys jäljittää seuraavan poikkeuksen esiintymisen. Sitä käytetään laajalti poikkeusviestin tulostamiseen.
PrintStackTrace()-menetelmästä on kolme versiota:
python alustusluettelo
Syntaksi | Kuvaus |
---|---|
printStackTrace() | Menetelmä tulostaa tämän heitettävän ja sen paluujäljityksen normaaliin virhevirtaan. |
public void printStackTrace (PrintStream s) | Menetelmä tulostaa heitettävyyden ja sen takaisinjäljityksen määritettyyn tulostusvirtaan. |
public void printStackTrace (PrintWriter s) | Menetelmä tulostaa heitettävillä ja jäljittää sen takaisin määritettyyn tulostuskirjoittimeen. |
Ymmärtääksemme printStackTrace()-menetelmän käsitteen luomme ensin a Java ohjelma, joka nosti nolla-jaon poikkeuksen. Tässä ohjelmassa emme käytä printStackTrace()-menetelmää poikkeuksen tulostamiseen.
TulostaExceptionMessage1.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(); } }
Kun suoritamme yllä olevan ohjelman, saamme an aritmeettinen poikkeus ja seuraava viesti tulostuu konsoliin:
Yllä olevassa viestissä emme voi osoittaa, mikä rivi heittää poikkeuksen. Joten on vaikea löytää poikkeuksia. Tämän ongelman ratkaisemiseksi käytämme printStackTrace()-menetelmää. Käytetään Java-ohjelmassa printStackTrace()-menetelmää.
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(); } }
Suoritetaan yllä oleva ohjelma.
Yllä oleva poikkeussanoma osoittaa selvästi, mikä menetelmä on aiheuttanut poikkeuksen, minkä tyyppinen poikkeus on ja mikä rivi heittää poikkeuksen.
Viestin ensimmäinen rivi osoittaa, että ohjelma heittää a java.lang.ArithmeticException (jakaa nollalla). Toinen rivi osoittaa, että poikkeuksia esiintyy rivillä 9 ja metodi divide() heittää poikkeuksen. Kolmas rivi näyttää poikkeuksen rivillä kaksikymmentäyksi . Main()-metodi heittää myös poikkeuksen, koska divide()-metodia kutsutaan main()-metodin sisällä. Siksi käyttämällä printStackTrace() menetelmällä voimme helposti huomauttaa tarkka sijainti poikkeuksesta.
Käytä getMessage()-menetelmää
The getMessage() menetelmä on myös määritelty Heitettävä luokka, joka kuuluu java.lang-pakettiin. Menetelmä tulostaa vain poikkeuksen viestin. Se ei tulosta poikkeuksen nimeä eikä kuvausta. Sitä käytetään laajalti poikkeusviestin tulostamiseen.
Syntaksi:
public String getMessage();
Se palauttaa tämän Throwable-instanssin yksityiskohtainen viestimerkkijono. Se voi olla tyhjä.
java-iteraattori kartalle
Käytetään Java-ohjelmassa getMessage()-metodia.
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); } } }
Suoritetaan yllä oleva ohjelma.
Huomaamme, että se tulostaa vain poikkeuksen. Joten sitä ei käytetä laajalti, koska se ei tulosta poikkeuksen yksityiskohtaista kuvausta.
Käytä toString()-menetelmää
The toString() menetelmä Heitettävä luokka ohittaa toString() Object-luokan menetelmä. Se tulostaa poikkeuksen lyhyen kuvauksen. Se ei näytä muita tietoja (kuten poikkeuksen nimeä ja pinon jäljitystä). Sitä ei käytetä laajasti poikkeusviestin tulostamiseen.
on suhde
Käytetään toString()-metodia Java-ohjelmassa.
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); } } }
Suoritetaan yllä oleva ohjelma.
Yllä olevassa viestissä huomaamme, että se tulostaa vain poikkeuksen nimen ja tyypin. Se ei osoita, millä linjalla poikkeus on tapahtunut.
Olemme nähneet erilaisia tapoja tulostaa poikkeusviesti Javassa. Suosittelemme käyttämään printStackTrace() menetelmää, koska se osoittaa paikkaan, jossa poikkeus tapahtuu.