Frage

Ich werde über ein Socket-Programm. Darin printStackTrace auf dem IOException Objekt im catch-Block genannt.
Was bedeutet printStackTrace() eigentlich tun?

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

Ich bin nicht bewusst seinen Zweck erfüllt. Was wird es verwendet?

War es hilfreich?

Lösung

Es ist eine Methode auf Exception Instanzen dass druckt den Stack-Trace der Instanz System.err .

Es ist ein sehr einfaches, aber sehr nützliches Werkzeug eine Ausnahme für die Diagnose. Es sagt Ihnen, was passiert ist und wo im Code dies geschehen ist.

Hier ist ein Beispiel dafür, wie könnte es in der Praxis verwendet werden:

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

Andere Tipps

Ich war irgendwie neugierig zu wissen, auch dies, so dass ich zusammen nur stellen Sie einen wenig Beispielcode, wo man sehen kann, was es tut:

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

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

Aufruf println(e):

  

java.lang.NullPointerException

Aufruf e.printStackTrace():

java.io.IOException
      at package.Test.main(Test.java:74)

Es hilft, die Ausnahme zu verfolgen. Zum Beispiel schreiben Sie einige Methoden in Ihrem Programm und ein Ihre Methoden verursachen Fehler. Dann Print wird Ihnen helfen, zu erkennen, welche Methode den Fehler verursacht. Stack wird wie folgt helfen:

Sie zunächst Ihre Hauptmethode aufgerufen wird, und auf Stapel eingefügt, dann wird die zweite Methode aufgerufen und auf den Stapel in LIFO-Reihenfolge eingefügt werden, und wenn ein Fehler irgendwo in irgendeinem Verfahren auftritt, dann wird dieser Stapel helfen, dieses Verfahren zu identifizieren.

printStackTrace() hilft dem Programmierer zu verstehen, wo das eigentliche Problem aufgetreten ist. printStacktrace() ist eine Methode der Klasse des Throwable java.lang Paket. Er druckt mehrere Zeilen in der Ausgabekonsole. Die erste Zeile besteht aus mehreren Saiten. Es enthält den Namen des Throwable Unterklasse & die Paketinformationen. ab von der zweiten Linie, beschreibt es die Fehlerposition / Zeilennummer mit at beginnen.

Die letzte Zeile beschreibt immer das Ziel von der Fehler / Ausnahme betroffen. Die zweite letzte Zeile informiert uns über die nächste Zeile in dem Stapel, wo die Steuerung geht nach in der letzten Zeile beschrieben Übertragung von der Zeilennummer zu bekommen. Die Fehler / Ausnahmen stellt die Ausgabe in Form eines Stapels, die in den Stapel durch fillInStackTrace() Methode der Klasse Throwable gefüttert wurden, die sich in der Programmsteuertransferdaten in den Ausführungsstapel füllt. Die Linien mit at beginnen, sind nichts anderes als die Werte des Ausführungsstapels. Auf diese Weise kann der Programmierer verstehen, wo in Code das eigentliche Problem ist.

Zusammen mit der printStackTrace() Methode, es ist eine gute Idee zu verwenden e.getmessage().

printStackTrace() druckt die Orte, an denen die Ausnahme in den Quellcode eingetreten ist, so der Autor erlaubt, die das Programm geschrieben, um zu sehen, was falsch gelaufen ist. Aber da es Probleme im Quellcode zeigt, der Benutzer (n), die kann oder keine Codierung Erfahrung der Lage sein, kann nicht verstehen kann, was schief gelaufen ist, also wenn das Programm dem Benutzer erlaubt, Fehlermeldungen an die Autoren zu schicken, die Benutzer können auf nicht in der Lage sein, gute Daten zu geben, was schief gelaufen ist.

Sie sollten die Logger.getLogger() Methode betrachten, es bietet eine bessere Ausnahmebehandlung (Logging) Möglichkeiten und neben printStackTrace() ohne Argument gelten als veraltet und sollen nur für Debugging-Zwecke verwendet werden, nicht für den Benutzer angezeigt.

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

printStackTrace ist ein Verfahren der Throwable Klasse. Dieses Verfahren zeigt die Fehlermeldung in der Konsole; wo wir die Ausnahme in dem Quellcode bekommen. Diese Verfahren können mit catch-Block verwendet werden, und sie beschreiben:

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

Die drei Verfahren, die die Ausnahme auf der Konsole beschreiben (wobei print ist einer von ihnen) 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());  
         }
    }
}

print () hilft den Programmierer zu verstehen, wo das eigentliche Problem aufgetreten ist. Es hilft, die Ausnahme zu verfolgen. es ist print () Methode der Klasse Throwable von jeder Ausnahmeklasse geerbt. Diese Methode druckt die gleiche Nachricht von e-Objekt und auch die Zeilennummer, wo die Ausnahme aufgetreten ist.

Im Folgenden wird ein weiteres Beispiel für 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: Das ist eine neue Ausnahme in Java ...     bei ClassName.methodName (filename: 5)

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

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

Zum Beispiel wollen wir eine Ausnahme behandeln. Lassen Sie uns einen Blick auf das folgende Beispiel.

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 Methode e.printStackTrace(); verwendet, um genau zu zeigen, was falsch ist.

In der Ausgabe können wir das folgende Ergebnis sehen.

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top