W tej części się dowiemy jak drukować komunikaty o wyjątkach w Javie stosując różne metody Możliwość rzucania Java klasa . Klasa Throwable udostępnia trzy następujące metody drukowania komunikatu o wyjątku:
- Korzystanie z metody printStackTrace
- Korzystanie z metody getMessage().
- Korzystanie z metody toString().
Omówmy szczegółowo jeden po drugim.
Korzystanie z metody printStackTrace().
The printStackTrace() metoda jest zdefiniowany w Możliwość rzucania klasa należąca do pakietu java.lang. Metoda drukuje nazwa, opis (Jak na przykład / o zero ) i Ślad stosu (numer wiersza i nazwa klasy, w przypadku gdy zgłoszony został wyjątek) wyjątku. Śledzenie stosu śledzi miejsce wystąpienia następnego wyjątku. Jest szeroko stosowany do drukowania komunikatu o wyjątku.
Istnieją trzy wersje metody printStackTrace():
klasa abstrakcyjna a interfejs
Składnia | Opis |
---|---|
printStackTrace() | Metoda wypisuje ten obiekt do rzucania i jego ślad do standardowego strumienia błędów. |
public void printStackTrace(PrintStream s) | Metoda drukuje obiekt rzucany i jego śledzenie do określonego strumienia wydruku. |
public void printStackTrace(PrintWriter s) | Metoda drukuje obiekt rzucany i jego ślad do określonego modułu zapisującego wydruk. |
Aby zrozumieć koncepcję metody printStackTrace(), najpierw utworzymy plik Jawa program, który podniósł wyjątek w przypadku dzielenia przez zero. W tym programie nie będziemy używać metody printStackTrace() do wydrukowania wyjątku.
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(); } }
Kiedy uruchomimy powyższy program, otrzymamy plik wyjątek arytmetyczny a na konsoli zostanie wypisany następujący komunikat:
W powyższym komunikacie nie możemy wskazać, która linia zgłasza wyjątek. Trudno więc znaleźć miejsca, w których występują wyjątki. Aby przezwyciężyć ten problem, używamy metody printStackTrace(). Użyjmy metody printStackTrace() w programie Java.
PrintExceptionMessage2.java
Strumień filtra 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(); } }
Uruchommy powyższy program.
Powyższy komunikat o wyjątku wyraźnie pokazuje, która metoda zgłosiła wyjątek, jaki jest jego typ i która linia zgłasza wyjątek.
Pierwsza linia komunikatu pokazuje, że program zgłasza plik a wyjątek java.lang.ArithmeticException (dzielony przez zero). Druga linia pokazuje, że w linii występują wyjątki 9 a metoda split() zgłasza wyjątek. Trzecia linia pokazuje ten wyjątek w linii dwadzieścia jeden . Metoda main() również zgłasza wyjątek, ponieważ metoda split() jest wywoływana wewnątrz metody main(). Dlatego korzystając z printStackTrace() metodę, możemy łatwo wskazać dokładne położenie wyjątku.
Korzystanie z metody getMessage().
The pobierz wiadomość() metoda jest również zdefiniowana w Możliwość rzucania klasa należąca do pakietu java.lang. Metoda wypisuje jedynie komunikat o wyjątku. Nie drukuje ani nazwy wyjątku, ani opisu. Jest szeroko stosowany do drukowania komunikatu o wyjątku.
Składnia:
public String getMessage();
Zwraca szczegółowy ciąg komunikatu tej instancji Throwable. Może być zerowy.
Użyjmy metody getMessage() w programie 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); } } }
Uruchommy powyższy program.
Zauważamy, że wypisuje tylko wyjątek. Dlatego nie jest szeroko stosowany, ponieważ nie drukuje szczegółowego opisu wyjątku.
Korzystanie z metody toString().
The doString() metoda Możliwość rzucania klasa zastępuje doString() metoda klasy Object. Drukuje krótki opis wyjątku. Nie pokazuje innych informacji (takich jak nazwa wyjątku i ślad stosu). Nie jest powszechnie używany do drukowania komunikatu o wyjątku.
Użyjmy metody toString() w programie 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); } } }
Uruchommy powyższy program.
W powyższym komunikacie zauważamy, że wypisuje jedynie nazwę i typ wyjątku. Nie wskazuje, w której linii wystąpił wyjątek.
rzuć obsługę wyjątków w Javie
Widzieliśmy różne sposoby drukowania komunikatu o wyjątku w Javie. Sugerujemy skorzystanie z printStackTrace() metodę, ponieważ wskazuje lokalizację, w której występuje wyjątek.