webentwicklung-frage-antwort-db.com.de

Was ist die Verwendung der printStackTrace () - Methode in Java?

Ich mache ein Socket-Programm durch. Dabei wird printStackTrace für das IOException-Objekt im catch-Block aufgerufen.
Was macht printStackTrace() eigentlich?

catch(IOException ioe)
{
    ioe.printStackTrace();
}

Ich bin mir dessen Zweck nicht bewusst. Was wird es verwendet? 

83
Venkat

Es ist eine Methode für Exception-Instanzen, die den Stack-Trace der Instanz nach System.err druckt.

Es ist ein sehr einfaches, aber sehr nützliches Werkzeug zur Diagnose von Ausnahmen. Es sagt Ihnen, was passiert ist und wo im Code dies passiert ist.

Hier ist ein Beispiel, wie es in der Praxis verwendet werden kann:

try {
    // ...
} catch (SomeException e) { 
    e.printStackTrace();
}
88
Joachim Sauer

Ich war auch ein bisschen neugierig, deshalb habe ich ein kleines Beispielcode zusammengestellt, in dem Sie sehen können, was es macht:

try {
    throw new NullPointerException();
}
catch (NullPointerException e) {
    System.out.println(e);
}

try {
    throw new IOException();
}
catch (IOException e) {
    e.printStackTrace();
}
System.exit(0);

Aufruf von println(e):

Java.lang.NullPointerException

Aufruf von e.printStackTrace():

Java.io.IOException
      at package.Test.main(Test.Java:74)
37
Jens Bodal

Es hilft, die Ausnahme zu verfolgen. Beispielsweise schreiben Sie einige Methoden in Ihr Programm, und eine Ihrer Methoden verursacht Fehler. Printstack hilft Ihnen dann zu ermitteln, welche Methode den Fehler verursacht. Stack wird so helfen:

Zuerst wird Ihre Hauptmethode aufgerufen und in den Stack eingefügt, dann wird die zweite Methode in der Reihenfolge LIFO aufgerufen und in den Stack eingefügt. Wenn in einer Methode ein Fehler auftritt, kann dieser Stack die Methode identifizieren.

13
yogesh pathak

printStackTrace() hilft dem Programmierer zu verstehen, wo das eigentliche Problem aufgetreten ist. printStacktrace() ist eine Methode der Klasse Throwable des Java.lang-Pakets. In der Ausgabekonsole werden mehrere Zeilen gedruckt. .__ Die erste Zeile besteht aus mehreren Strings. Es enthält den Namen der Throwable-Unterklasse und die Paketinformationen. Ab der zweiten Zeile wird die Fehlerposition/Zeilennummer beschrieben, die mit at beginnt. 

Die letzte Zeile beschreibt immer das von dem Fehler/der Ausnahme betroffene Ziel. Die vorletzte Zeile informiert uns über die nächste Zeile im Stapel, in die die Steuerung geht, nachdem die Übertragung von der in der letzten Zeile beschriebenen Zeilennummer erfolgt ist. Die Fehler/Ausnahmen stellen die Ausgabe in Form eines Stapels dar, die von der fillInStackTrace()-Methode der Throwable-Klasse in den Stapel eingespeist wurde, die selbst die Programmsteuerungs-Übertragungsdetails in den Ausführungsstack füllt. Die Zeilen, die mit at beginnen, sind nichts anderes als die Werte des Ausführungsstapels. Auf diese Weise kann der Programmierer verstehen, wo das eigentliche Problem im Code liegt.

Neben der printStackTrace()-Methode sollten Sie e.getmessage() verwenden.

10
Ashish Gope

printStackTrace() gibt die Stellen aus, an denen die Ausnahme im Quellcode aufgetreten ist. Auf diese Weise kann der Autor, der das Programm geschrieben hat, erkennen, was schief gegangen ist. Da es jedoch Probleme im Quellcode gibt, können die Benutzer, die möglicherweise keine Codierkenntnisse haben oder nicht, möglicherweise nicht verstehen, was schiefgegangen ist. Wenn also das Programm dem Benutzer das Versenden von Fehlernachrichten an die Autoren ermöglicht, wird die Fehlermeldung angezeigt Benutzer sind möglicherweise nicht in der Lage, gute Daten darüber zu liefern, was schiefgegangen ist.

Sie sollten die Logger.getLogger()-Methode in Betracht ziehen. Sie bietet eine bessere Möglichkeit zur Ausnahmebehandlung (Protokollierung). Außerdem gilt printStackTrace() ohne Argumente als veraltet und sollte NUR für Debugging-Zwecke und nicht für die Anzeige von Benutzern verwendet werden.

5
WIll

Die printStackTrace() hilft dem Programmierer zu verstehen, wo das eigentliche Problem aufgetreten ist. Die printStackTrace()-Methode ist ein Member der Klasse Throwable im Java.lang-Paket.

printStackTrace ist eine Methode der Klasse Throwable. Diese Methode zeigt eine Fehlermeldung in der Konsole an. wo wir die Ausnahme im Quellcode bekommen. Diese Methoden können mit catch block verwendet werden und beschreiben:

  1. Name der Ausnahme.
  2. Beschreibung der Ausnahme.
  3. Position der Ausnahme im Quellcode.

Die drei Methoden, die die Ausnahme auf der Konsole beschreiben (in der printStackTrace eine davon ist), sind:

  1. printStackTrace()
  2. toString()
  3. getMessage()

Beispiel:

public class BabluGope {
    public static void main(String[] args) {
        try {
            System.out.println(10/0);
         } catch (ArithmeticException e) {
             e.printStackTrace();   
             // System.err.println(e.toString());
             //System.err.println(e.getMessage());  
         }
    }
}
1
Bablu Mgc

Was ist die Verwendung der e.printStackTrace () - Methode in Java?

Nun, der Zweck dieser Methode e.printStackTrace(); ist zu sehen, was genau falsch ist. 

Zum Beispiel möchten wir eine Ausnahme behandeln. Schauen wir uns das folgende Beispiel an.

public class Main{

  public static void main(String[] args) {

    int a = 12;
    int b = 2;

    try {
       int result = a / (b - 2);
       System.out.println(result);
    }

    catch (Exception e)
    {
       System.out.println("Error: " + e.getMessage());
       e.printStackTrace();
    }
  }
}

Ich habe die Methode e.printStackTrace(); verwendet, um genau zu zeigen, was falsch ist. 

In der Ausgabe sehen wir folgendes Ergebnis. 

Error: / by zero

Java.lang.ArithmeticException: / by zero

  at Main.main(Main.Java:10)
  at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
  at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
  at Java.lang.reflect.Method.invoke(Method.Java:498)
  at com.intellij.rt.execution.application.AppMain.main(AppMain.Java:147)
0
user5245248

printStackTrace () hilft dem Programmierer zu verstehen, wo das eigentliche Problem aufgetreten ist. Es hilft, die Ausnahme zu verfolgen Es handelt sich um die printStackTrace () - Methode der Throwable-Klasse, die von jeder Ausnahmeklasse geerbt wird. Diese Methode gibt dieselbe Nachricht des e-Objekts aus und auch die Zeilennummer, in der die Ausnahme aufgetreten ist.

Im Folgenden finden Sie ein weiteres Beispiel für den Druckstapel der Ausnahme in Java.

public class Demo {
   public static void main(String[] args) {
      try {
         ExceptionFunc();
      } catch(Throwable e) {
         e.printStackTrace();
      }
   }
   public static void ExceptionFunc() throws Throwable {
      Throwable t = new Throwable("This is new Exception in Java...");

      StackTraceElement[] trace = new StackTraceElement[] {
         new StackTraceElement("ClassName","methodName","fileName",5)
      };
      t.setStackTrace(trace);
      throw t;
   }
}

Java.lang.Throwable: Dies ist eine neue Ausnahme in Java ... at ClassName.methodName (Dateiname: 5)

0
RohanMNirer