Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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 getStacktrace()、setStackTrace()的用途是什么?我无法理解此函数需要什么?_Java_Exception Handling - Fatal编程技术网

Java getStacktrace()、setStackTrace()的用途是什么?我无法理解此函数需要什么?

Java getStacktrace()、setStackTrace()的用途是什么?我无法理解此函数需要什么?,java,exception-handling,Java,Exception Handling,我无法理解这个代码。。我很清楚语法,但是为什么使用getStackTrace()和setStackTrace()?我的意思是我想知道它在真实场景中的实现是什么?i、 例如,该代码的期望输出是什么 package stackTrace; class a { public void fun() { try { findexception(); } catch (Exception e) { StackTrac

我无法理解这个代码。。我很清楚语法,但是为什么使用
getStackTrace()
setStackTrace()
?我的意思是我想知道它在真实场景中的实现是什么?i、 例如,该代码的期望输出是什么

package stackTrace;

class a {
    public void fun() {
        try {
            findexception();

        } catch (Exception e) {
            StackTraceElement[] x = e.getStackTrace();
            System.err.println(x[1].toString());

        }
    }

    public void findexception() throws Exception {
        // int i=0;
        Exception ex = new Exception();
        StackTraceElement[] y = new StackTraceElement[2];

        y[0] = new StackTraceElement("class0", "method0", "type0", 0);
        y[1] = new StackTraceElement("class1", "method1", "type1", 1);

        ex.setStackTrace(y);
        ex.printStackTrace();
        throw ex;

    }
}

public class stackTrace {
    public static void main(String[] args) {
        a obj = new a();
        obj.fun();
    }

}

其主要思想是针对您的用例定制堆栈跟踪(使用堆栈跟踪中需要的一些额外信息定制错误处理),例如:

Throwable类的setStackTrace(StackTraceeElement[]stackTrace)方法用于将堆栈跟踪元素设置到此Throwable对象,此堆栈跟踪将由getStackTrace()返回,并由printStackTrace()和相关方法打印。 此方法允许用户覆盖默认堆栈跟踪,默认堆栈跟踪在构造throwable时由fillInStackTrace()生成,或在从序列化流读取throwable时反序列化