Java Java类
堆栈跟踪中的一个元素,由 Throwable.getStackTrace() 返回。每个元素代表一个堆栈帧。除了栈顶的栈帧外,所有栈帧都代表一个方法调用。堆栈顶部的帧表示生成堆栈跟踪的执行点。
此类描述单个堆栈帧,它是发生异常时堆栈跟踪的单个元素。
- 除了栈顶的栈帧外,所有栈帧都代表一个方法调用。
- 堆栈顶部的帧表示生成堆栈跟踪的执行点。
- 每个堆栈帧代表一个执行点,其中包括方法名、文件名和源代码行号等内容。
- getStackTrace()返回一个StackTraceElement数组
Throwable类的方法。
构造函数:创建表示指定执行点的堆栈跟踪元素。
StackTraceElement(String declaringClass,
String methodName, String fileName, int lineNumber)
参数:
- declaringClass – 包含堆栈跟踪元素表示的执行点的类的完全限定名称。
- methodName – 包含堆栈跟踪元素表示的执行点的方法的名称。
- fileName – 包含堆栈跟踪元素表示的执行点的文件的名称,如果此信息不可用,则为 null
- lineNumber – 包含此堆栈跟踪元素表示的执行点的源行的行号,如果此信息不可用,则为负数。值 -2 表示包含执行点的方法是本机方法。
抛出: NullPointerException – 如果 declaringClass 或 methodName 为 null。
方法:
1. boolean equals(ob):如果调用StackTraceElement与ob传入的一样,则返回 try。否则返回false。
Syntax: public boolean equals(ob)
Returns: true if the specified object is
another StackTraceElement instance representing the same execution
point as this instance.
Exception: NA
Java
// Java code illustrating equals() method
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{
public static void main(String[] arg)
{
StackTraceElement st1 = new StackTraceElement("foo", "fuction1",
"StackTrace.java", 1);
StackTraceElement st2 = new StackTraceElement("bar", "function2",
"StackTrace.java", 1);
Object ob = st1.getFileName();
// checking whether file names are same or not
System.out.println(st2.getFileName().equals(ob));
}
}
Java
// Java code illustrating getClassName() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{
public static void main(String[] arg)
{
System.out.println("Class name of each thread involved:");
for(int i = 0; i<2; i++)
{
System.out.println(Thread.currentThread().getStackTrace()[I].
getClassName());
}
}
}
Java
// Java code illustrating getFileName() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{
public static void main(String[] arg)
{
System.out.println("file name: ");
for(int i = 0; i<2; i++)
System.out.println(Thread.currentThread().getStackTrace()[i].
getFileName());
}
}
Java
// Java code illustrating getLineNumber() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{
public static void main(String[] arg)
{
System.out.println("line number: ");
for(int i = 0; i<2; i++)
System.out.println(Thread.currentThread().getStackTrace()[i].
getLineNumber());
}
}
Java
// Java code illustrating getMethodName() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{
public static void main(String[] arg)
{
System.out.println("method name: ");
for(int i = 0; i<2; i++)
System.out.println(Thread.currentThread().getStackTrace()[i].
getMethodName());
}
}
Java
// Java code illustrating hashCode() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{
public static void main(String[] arg)
{
System.out.println("hash code: ");
for(int i = 0; i<2; i++)
System.out.println(Thread.currentThread().getStackTrace()[i].
hashCode());
}
}
Java
// Java code illustrating isNativeMethod() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{
public static void main(String[] arg)
{
for(int i = 0; i<2; i++)
System.out.println(Thread.currentThread().getStackTrace()[i].
isNativeMethod());
}
}
Java
// Java code illustrating toString() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{
public static void main(String[] arg)
{
System.out.println("String equivalent: ");
for(int i = 0; i<2; i++)
System.out.println(Thread.currentThread().getStackTrace()[i].
toString());
}
}
输出:
true
2. String getClassName():返回调用StackTraceElement所描述的执行点的类名。
Syntax: public String getClassName().
Returns: the fully qualified name of the Class
containing the execution point represented by this stack trace element.
Exception: NA.
Java
// Java code illustrating getClassName() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{
public static void main(String[] arg)
{
System.out.println("Class name of each thread involved:");
for(int i = 0; i<2; i++)
{
System.out.println(Thread.currentThread().getStackTrace()[I].
getClassName());
}
}
}
输出:
Class name of each thread involved:
java.lang.Thread
StackTraceElementDemo
3. String getFileName():返回调用StackTraceElement所描述的执行点的文件名。
Syntax: public String getFileName().
Returns: the name of the file containing
the execution point represented by this stack trace element,
or null if this information is unavailable.
Exception: NA.
Java
// Java code illustrating getFileName() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{
public static void main(String[] arg)
{
System.out.println("file name: ");
for(int i = 0; i<2; i++)
System.out.println(Thread.currentThread().getStackTrace()[i].
getFileName());
}
}
输出:
file name:
Thread.java
StackTraceElementDemo.java
4. int getLineNumber():返回调用StackTraceElement所描述的执行点的源代码行号。在某些情况下,行号将不可用,在这种情况下会返回负值。
Syntax: public int getLineNumber().
Returns: the line number of the source line
containing the execution point represented by this stack
trace element, or a negative number if this information is
unavailable.
Exception: NA.
Java
// Java code illustrating getLineNumber() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{
public static void main(String[] arg)
{
System.out.println("line number: ");
for(int i = 0; i<2; i++)
System.out.println(Thread.currentThread().getStackTrace()[i].
getLineNumber());
}
}
输出:
line number:
1556
10
5. String getMethodName():返回调用StackTraceElement所描述的执行点的方法名。
Syntax: public String getMethodName().
Returns: the name of the method containing the
execution point represented by this stack trace element.
Exception: NA.
Java
// Java code illustrating getMethodName() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{
public static void main(String[] arg)
{
System.out.println("method name: ");
for(int i = 0; i<2; i++)
System.out.println(Thread.currentThread().getStackTrace()[i].
getMethodName());
}
}
输出:
method name:
getStackTrace
main
6. int hashCode():返回调用StackTraceElement的哈希码。
Syntax: public int hashCode().
Returns: a hash code value for this object.
Exception: NA.
Java
// Java code illustrating hashCode() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{
public static void main(String[] arg)
{
System.out.println("hash code: ");
for(int i = 0; i<2; i++)
System.out.println(Thread.currentThread().getStackTrace()[i].
hashCode());
}
}
输出:
hash code:
-1225537245
-1314176653
7. boolean isNativeMethod():如果调用StackTraceElement描述了本地方法,则返回 true。否则返回假。
Syntax: public boolean isNativeMethod().
Returns: true if the method containing the execution
point represented by this stack trace element is a native method.
Exception: NA.
Java
// Java code illustrating isNativeMethod() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{
public static void main(String[] arg)
{
for(int i = 0; i<2; i++)
System.out.println(Thread.currentThread().getStackTrace()[i].
isNativeMethod());
}
}
输出:
false
false
8. String toString():返回调用序列的等效字符串。
Syntax: public String toString().
Returns: a string representation of the object.
Exception: NA.
Java
// Java code illustrating toString() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{
public static void main(String[] arg)
{
System.out.println("String equivalent: ");
for(int i = 0; i<2; i++)
System.out.println(Thread.currentThread().getStackTrace()[i].
toString());
}
}
输出:
String equivalent:
java.lang.Thread.getStackTrace
StackTraceElementDemo.main