Java中printStackTrace()方法的用法是什么?
我正在通过套接字程序。 其中, printStackTrace
在catch块中的IOException
对象上被调用。
printStackTrace()
实际上做了什么?
catch(IOException ioe) { ioe.printStackTrace(); }
我不知道它的目的。 它是干什么用的?
它将System.err
的Exception
的堆栈跟踪打印出来 。
这是一个非常简单但非常有用的诊断exception的工具。 它会告诉你发生了什么事,代码发生在哪里。
我对此也很好奇,所以我只是把一些示例代码放在一起,看看它在做什么:
try { throw new NullPointerException(); } catch (NullPointerException e) { System.out.println(e); } try { throw new IOException(); } catch (IOException e) { e.printStackTrace(); } System.exit(0);
println(e):
java.lang.NullPointerException
e.printStackTrace:
java.io.IOException at package.Test.main(Test.java:74)
它有助于追查exception。 例如,你在你的程序中写了一些方法,你的一个方法会导致错误。 然后printstack将帮助您确定哪个方法导致错误。 堆栈会这样的帮助:
首先你的主要方法将被调用并插入到堆栈,然后第二个方法将被调用并以LIFO顺序插入到堆栈中,如果在任何方法内部发生任何错误,那么这个堆栈将有助于识别该方法。
printStackTrace()帮助程序员了解实际发生的问题。 printStacktrace()是java.lang包的Throwable类的一个方法。 它在输出控制台中打印几行。 第一行由几个string组成。 它包含Throwable子类的名称和包信息。 从第二行开始,它描述了以“ at ”开头的错误位置/行号。
最后一行总是描述受错误/exception影响的目标。 最后一行告诉我们关于从最后一行描述的行号转移后的控制权栈中的下一行。 错误/exception表示堆栈forms的输出,通过Throwable类的fillInStackTrace()方法将其input到堆栈中, Throwable类的fillInStackTrace()方法本身将程序控制传输细节填充到执行堆栈中。 从at开始的行只不过是执行堆栈的值。 通过这种方式,程序员可以了解代码中的实际问题。
与printStackTrace()方法一起,使用e.getmessage()是一个好主意。
printStackTrace():打印源代码中发生exception的位置,从而允许编写程序的作者查看出了什么问题。 但是由于它在源代码中显示出问题,所以可能或者可能没有任何编码经验的用户可能不能理解错误,所以如果程序允许用户向作者发送错误消息,用户可能无法提供有关错误的良好数据。
你应该考虑:Logger.getLogger()方法,它提供了一个更好的exception处理(日志)设施,除了printStackTrace()没有参数被认为是过时的,应该只用于debugging目的,而不是用户显示。
printStackTrace()
帮助程序员理解实际发生的问题。 printStackTrace()
方法是java.lang
包中Throwable
类的成员。
Java中e.printStackTrace()方法的用法是什么?
那么,使用这个方法的目的是e.printStackTrace();
是要看到究竟是什么错误。
例如,我们想要处理一个exception。 让我们来看看下面的例子。
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(); } } }
我已经使用方法e.printStackTrace();
为了显示究竟是什么错误。
在输出中,我们可以看到下面的结果。
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)
printStackTrace
是Throwable
类的一个方法。 此方法在控制台上显示错误消息,我们在源代码中获取exception。 这些方法可以与catch块一起使用并描述:
- exception的名称。
- 说明例外。
- 我们在哪里得到例外。
有三种方法描述控制台中的printStackTrace是其中之一的exception。 这三种方法是:
-
printStackTrace()
-
toString()
-
getMessage()
例:
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()); } } }