Ven*_*kat 93 java exception-handling printstacktrace
我正在通过套接字程序.在其中,printStackTrace调用IOExceptioncatch块中的对象.
什么是printStackTrace()真正做到?
catch(IOException ioe)
{
ioe.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我不知道它的目的.它是干什么用的?
Joa*_*uer 95
它是一个Exception实例的方法,用于打印System.err实例的堆栈跟踪.
这是一个非常简单但非常有用的诊断异常的工具.它告诉你发生了什么以及代码发生在哪里.
以下是在实践中如何使用它的示例:
try {
// ...
} catch (SomeException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
Jen*_*dal 40
我对此也很好奇,所以我只是将一些示例代码放在一起,你可以看到它在做什么:
try {
throw new NullPointerException();
}
catch (NullPointerException e) {
System.out.println(e);
}
try {
throw new IOException();
}
catch (IOException e) {
e.printStackTrace();
}
System.exit(0);
Run Code Online (Sandbox Code Playgroud)
致电println(e):
java.lang.NullPointerException
致电e.printStackTrace():
Run Code Online (Sandbox Code Playgroud)java.io.IOException at package.Test.main(Test.java:74)
小智 14
它有助于跟踪异常.例如,您正在程序中编写一些方法,并且您的一种方法会导致错误.然后printstack将帮助您确定导致错误的方法.Stack会有这样的帮助:
首先,您的main方法将被调用并插入到堆栈中,然后第二个方法将被调用并以LIFO顺序插入到堆栈中,如果在任何方法内某处发生任何错误,则此堆栈将有助于识别该方法.
Ash*_*ope 11
printStackTrace()帮助程序员了解实际问题发生的位置.printStacktrace()是一个包类Throwable的方法java.lang.它在输出控制台中打印几行.第一行由几个字符串组成.它包含Throwable子类的名称和包信息.从第二行开始,它描述了以错误位置/行号开头at.
最后一行始终描述受错误/异常影响的目标.最后一行告诉我们堆栈中的下一行,在从最后一行描述的行号转移之后控制进行.错误/异常表示堆栈形式的输出,它通过类的fillInStackTrace()方法提供给堆栈,Throwable类本身将程序控制传输细节填入执行堆栈.以...开头的行at只不过是执行堆栈的值.通过这种方式,程序员可以理解代码中实际问题的位置.
随着printStackTrace()方法,使用是一个好主意e.getmessage().
printStackTrace()打印源代码中发生异常的位置,从而允许编写程序的作者查看出错的地方.但由于它在源代码中显示出问题,可能有或没有任何编码经验的用户可能无法理解出错的地方,因此如果程序允许用户向作者发送错误消息,用户可能无法提供有关出错的良好数据.
您应该考虑该Logger.getLogger()方法,它提供了一个更好的异常处理(日志记录)工具,除了printStackTrace()没有参数被认为是过时的,应该只用于调试目的,而不是用户显示.