Pertanyaan Apa gunanya metode printStackTrace () di Java?


Saya akan melalui program socket. Di dalamnya, printStackTrace disebut di IOException objek di blok tangkap.
Apa yang terjadi printStackTrace() sebenarnya?

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

Saya tidak menyadari tujuannya. Untuk apa digunakan?


76
2018-04-01 12:46


asal


Jawaban:


Ini sebuah metode Exception contoh itu mencetak jejak tumpukan instance ke System.err.

Ini adalah alat yang sangat sederhana, tetapi sangat berguna untuk mendiagnosis suatu pengecualian. Ini memberi tahu Anda apa yang terjadi dan di mana dalam kode ini terjadi.

Berikut ini contoh bagaimana hal itu dapat digunakan dalam praktik:

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

83
2018-04-01 12:47



Saya juga ingin tahu tentang hal ini, jadi saya hanya mengumpulkan sedikit contoh kode di mana Anda dapat melihat apa yang dilakukannya:

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

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

Panggilan println(e):

java.lang.NullPointerException

Panggilan e.printStackTrace():

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

36
2018-02-14 19:43



Ini membantu untuk melacak pengecualian. Misalnya Anda menulis beberapa metode dalam program Anda dan salah satu metode Anda menyebabkan bug. Kemudian printstack akan membantu Anda mengidentifikasi metode mana yang menyebabkan bug. Tumpukan akan membantu seperti ini:

Pertama metode utama Anda akan dipanggil dan disisipkan ke stack, maka metode kedua akan dipanggil dan dimasukkan ke stack dalam rangka LIFO dan jika ada kesalahan terjadi di suatu tempat di dalam metode apa pun maka tumpukan ini akan membantu mengidentifikasi metode tersebut.


13
2018-04-23 11:24



printStackTrace() membantu programmer untuk memahami di mana masalah yang sebenarnya terjadi. printStacktrace() adalah metode kelas Throwable dari java.lang paket. Ini mencetak beberapa baris di konsol output. Baris pertama terdiri dari beberapa string. Ini berisi nama sub-kelas Throwable & informasi paket. Dari baris kedua dan seterusnya, ini menggambarkan posisi kesalahan / nomor baris yang diawali dengan at.

Baris terakhir selalu menggambarkan tujuan yang dipengaruhi oleh kesalahan / pengecualian. Baris terakhir kedua menginformasikan kepada kita tentang baris berikutnya di tumpukan tempat kontrol berjalan setelah mendapatkan transfer dari nomor baris yang dijelaskan di baris terakhir. Kesalahan / pengecualian mewakili output dalam bentuk tumpukan, yang dimasukkan ke dalam tumpukan oleh fillInStackTrace() metode dari Throwable kelas, yang dengan sendirinya mengisi rincian transfer kontrol program ke dalam tumpukan eksekusi. Garis yang dimulai dengan at, tidak lain adalah nilai dari tumpukan eksekusi. Dengan cara ini programmer dapat memahami di mana dalam kode masalah sebenarnya.

Bersama dengan printStackTrace() metode, itu ide yang baik untuk digunakan e.getmessage().


10
2017-08-01 16:42



printStackTrace() mencetak lokasi di mana pengecualian terjadi di kode sumber, sehingga memungkinkan penulis yang menulis program untuk melihat apa yang salah. Tetapi karena ini menunjukkan masalah dalam kode sumber, pengguna yang mungkin atau mungkin tidak memiliki pengalaman pengkodean mungkin tidak dapat memahami apa yang salah, jadi jika program memungkinkan pengguna untuk mengirim pesan kesalahan ke penulis, pengguna mungkin tidak dapat memberikan data yang baik tentang apa yang salah.

Anda harus mempertimbangkan Logger.getLogger() metode, ia menawarkan fasilitas penanganan pengecualian (penebangan) yang lebih baik, dan selain itu printStackTrace() tanpa argumen dianggap usang dan HANYA harus digunakan untuk keperluan debugging, bukan untuk tampilan pengguna.


5
2018-05-28 03:10



Itu printStackTrace() membantu pemrogram memahami di mana masalah yang sebenarnya terjadi. Itu printStackTrace() metode adalah anggota kelas Throwable dalam java.lang paket.


2
2018-06-30 18:25



Apa gunanya metode e.printStackTrace () di Java?

Nah, tujuan menggunakan metode ini e.printStackTrace(); adalah untuk melihat apa yang sebenarnya salah.

Misalnya, kami ingin menangani pengecualian. Mari kita lihat Contoh berikut.

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();
    }
  }
}

Saya telah menggunakan metode e.printStackTrace(); untuk menunjukkan apa yang salah.

Pada output, kita dapat melihat hasil sebagai berikut.

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
2018-02-26 00:16



printStackTrace adalah metode dari Throwable kelas. metode ini menampilkan pesan kesalahan di konsol di mana kita mendapatkan pengecualian pada kode sumber. Metode-metode ini dapat digunakan dengan blok tangkap dan menggambarkan:

  1. Nama pengecualian.
  2. Deskripsi pengecualian.
  3. Di mana kita mendapatkan pengecualian.

Ada tiga metode yang menggambarkan pengecualian pada konsol di mana printStackTrace adalah salah satunya. ketiga metode ini adalah:

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

Contoh:

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());  
         }
    }
}

0
2017-07-12 20:47