Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中模拟printStackTrace()方法_Java_Exception_Printstacktrace - Fatal编程技术网

在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()的方法
我真的不知道如何开始这样做,这可能吗?

Is
getStackTrace()
对我来说是个不错的选择。

如果您想随时获取堆栈跟踪,可以尝试以下方法:

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所指出的,你应该先尝试一下自己。问答也是如此,而不是教程。