在java中模拟printStackTrace()方法
我的问题是有什么方法可以实现类似于在java中模拟printStackTrace()方法,java,exception,printstacktrace,Java,Exception,Printstacktrace,我的问题是有什么方法可以实现类似于printStackTrace()的方法 我真的不知道如何开始这样做,这可能吗? IsgetStackTrace()对我来说是个不错的选择。如果您想随时获取堆栈跟踪,可以尝试以下方法: Thread.currentThread().getStackTrace();// this return an array of StackTraceElement loop over in order to print them. 或者,如果您只想在异常情况下获取堆栈跟踪,
printStackTrace()的方法
我真的不知道如何开始这样做,这可能吗?
IsgetStackTrace()
对我来说是个不错的选择。如果您想随时获取堆栈跟踪,可以尝试以下方法:
Thread.currentThread().getStackTrace();// this return an array of StackTraceElement loop over in order to print them.
或者,如果您只想在异常情况下获取堆栈跟踪,只需使用apachecommon
库中的ExceptionUtils
ExceptionUtils.getFullStackTrace(ex);
如果您想随时获取堆栈跟踪,可以尝试以下方法:
Thread.currentThread().getStackTrace();// this return an array of StackTraceElement loop over in order to print them.
或者,如果您只想在异常情况下获取堆栈跟踪,只需使用apachecommon
库中的ExceptionUtils
ExceptionUtils.getFullStackTrace(ex);
您可以在Throwable
类的帮助下完成此操作。请参见下面的代码:
该方法返回stacktrace
public String tracePoint()
{
String trace = "";
Throwable t = new Throwable();
StackTraceElement[] s = t.getStackTrace();
for(int i=0; i<s.length; i++)
{
trace += s[i] + "\n";
}
return trace;
}
公共字符串跟踪点()
{
字符串trace=“”;
可丢弃t=新的可丢弃();
StackTraceElement[]s=t.getStackTrace();
对于(int i=0;i您可以在Throwable
类的帮助下完成。请参见下面的代码:
该方法返回stacktrace
public String tracePoint()
{
String trace = "";
Throwable t = new Throwable();
StackTraceElement[] s = t.getStackTrace();
for(int i=0; i<s.length; i++)
{
trace += s[i] + "\n";
}
return trace;
}
公共字符串跟踪点()
{
字符串trace=“”;
可丢弃t=新的可丢弃();
StackTraceElement[]s=t.getStackTrace();
对于(int i=0;i,以下是正式的操作方式(格式):
private void printStackTrace{
dejaVu=
Collections.(新());
dejaVu.(此);
synchronized(s.()){
s.(此)
[]trace=();
for(traceElement:trace)
s.(“\tat”+traceElement);
打印禁止的异常,如果有
for(se:())
se.(s,trace,禁止的标题,“\t”,dejaVu);
打印原因,如果有
我们的原因=()
如果(ourCause!=null)
ourCause.(s,trace,CAUSE_CAPTION,”,dejaVu);
}
}
处理的问题比您预期的要多一些,但您可以轻松删除任何不关心的问题。以下是处理问题的正式方式(格式):
private void printStackTrace{
dejaVu=
Collections.(新());
dejaVu.(此);
synchronized(s.()){
s.(此)
[]trace=();
for(traceElement:trace)
s.(“\tat”+traceElement);
打印禁止的异常,如果有
for(se:())
se.(s,trace,禁止的标题,“\t”,dejaVu);
打印原因,如果有
我们的原因=()
如果(ourCause!=null)
ourCause.(s,trace,CAUSE_CAPTION,”,dejaVu);
}
}
处理的问题比您预期的要多一些,但您可以轻松删除任何您不关心的问题。我相信社区决定是否投票赞成/反对,而不是投票反对getStackTrace()的每个条目
?这个问题似乎离题了,因为OP没有表现出任何努力。我是下一个投票人。我认为在需要的时候必须下一个投票。这样,你可以了解这里应该问什么问题以及将来如何改进。下一个投票在解释时和上一个投票一样好。如果你想重新发明一个轮子,请看转动轮子,看看它是如何工作的。当然你有你的JDK来源。如果你心中有一个目标,这会给你的问题一个目的,你应该这么说。而且,正如鲁里查所指出的,你应该先尝试一下自己。问答也是如此,而不是教程。我相信社区决定是否投票赞成/反对,而不是反对getStackTrace()
?这个问题似乎离题了,因为OP没有表现出任何努力。我是下一个投票人。我认为在需要的时候必须下一个投票。这样,你可以了解这里应该问什么问题以及将来如何改进。下一个投票在解释时和上一个投票一样好。如果你想重新发明一个轮子,请看转动方向盘,看看它是如何工作的。当然你有你的JDK来源。如果你心中有一个目标,这会给你的问题一个目的,你应该这样说。而且,正如Ruricha所指出的,你应该先尝试一下自己。问答也是如此,而不是教程。