В този раздел ще научим как да отпечатвате съобщения за изключение в Java чрез използване на различни методи на Java Throwable клас . Класът Throwable предоставя следните три метода за отпечатване на съобщението за изключение:
- Използване на метода printStackTrace
- Използване на метода getMessage().
- Използване на метода toString().
Нека обсъдим един по един в детайли.
Използване на метода printStackTrace().
The printStackTrace() метод се определя в Хвърляем клас, който принадлежи към пакета java.lang. Методът отпечатва име, описание (като / с нула ), и проследяване на стека (номер на ред и име на клас, където е повдигнато изключение) на изключение. Проследяването на стека проследява къде възниква следващото изключение. Той се използва широко за отпечатване на съобщението за изключение.
Има три версии на метода printStackTrace():
масив c низ
Синтаксис | Описание |
---|---|
printStackTrace() | Методът отпечатва това хвърляне и неговото обратно проследяване към стандартния поток от грешки. |
public void printStackTrace(PrintStream s) | Методът отпечатва throwable и неговото обратно проследяване към указания поток за печат. |
public void printStackTrace(PrintWriter s) | Методът отпечатва throwable и неговото обратно проследяване към посочения записващ принтер. |
За да разберем концепцията на метода printStackTrace(), първо ще създадем a Java програма, която повдигна изключение за деление на нула. В тази програма няма да използваме метода printStackTrace() за отпечатване на изключението.
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(); } }
Когато стартираме горната програма, получаваме аритметично изключение и на конзолата се отпечатва следното съобщение:
В горното съобщение не можем да посочим кой ред хвърля изключение. Така че е трудно да се намери къде има изключения. За да преодолеем този проблем, използваме метода printStackTrace(). Нека използваме метода printStackTrace() в програма на 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(); } }
Нека стартираме горната програма.
Горното съобщение за изключение ясно показва кой метод е предизвикал изключение, кой тип е изключение и кой ред хвърля изключение.
разлика между $ и $$
Първият ред на съобщението показва, че програмата хвърля a java.lang.ArithmeticException (разделяне на нула). Вторият ред показва, че изключения възникват на ред 9 и методът divide() хвърля изключение. Третият ред показва това изключение на ред двадесет и едно . Методът main() също хвърля изключение, тъй като методът divide() се извиква вътре в метода main(). Следователно, използването на printStackTrace() метод, можем лесно да посочим точно местоположение на изключението.
Използване на метода getMessage().
The getMessage() методът също е дефиниран в Хвърляем клас, който принадлежи към пакета java.lang. Методът отпечатва само съобщението за изключение. Нито отпечатва името на изключението, нито описанието. Той се използва широко за отпечатване на съобщението за изключение.
Синтаксис:
public String getMessage();
Връща низа с подробно съобщение на този Throwable екземпляр. Може да е нула.
Нека използваме метода getMessage() в програма на 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); } } }
Нека стартираме горната програма.
Забелязваме, че отпечатва само изключението. Така че не се използва широко, защото не отпечатва подробното описание на изключение.
Използване на метода toString().
The toString() метод на Хвърляем клас отменя toString() метод на класа Object. Отпечатва краткото описание на изключение. Не показва друга информация (като име на изключение и проследяване на стека). Не се използва широко за отпечатване на съобщението за изключение.
анотации в пролетното зареждане
Нека използваме метода toString() в програма на 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); } } }
Нека стартираме горната програма.
В горното съобщение забелязваме, че то отпечатва само името и типа на изключението. Не посочва на кой ред е възникнало изключение.
Видяхме различните начини за отпечатване на съобщението за изключение в Java. Предлагаме ви да използвате printStackTrace() метод, защото сочи към мястото, където възниква изключение.