阅读(208) (7)

鸿蒙OS StackTraceElement

2022-04-28 16:01:57 更新

StackTraceElement

java.lang.Object

|---java.lang.StackTraceElement

public final class StackTraceElement
extends Object
implements Serializable

堆栈跟踪中的一个元素,由 Throwable#getStackTrace() 返回。 每个元素代表一个堆栈帧。 除了栈顶的栈帧外,所有栈帧都代表一个方法调用。 堆栈顶部的帧表示生成堆栈跟踪的执行点。 通常,这是创建对应于堆栈跟踪的 throwable 的点。

构造函数摘要

构造函数 描述
StackTraceElement(String declaringClass, String methodName, String fileName, int lineNumber) 创建表示指定执行点的堆栈跟踪元素。

方法总结

修饰符和类型 方法 描述
boolean equals(Object obj) 如果指定对象是另一个 StackTraceElement 实例,表示与此实例相同的执行点,则返回 true。
String getClassName() 返回包含此堆栈跟踪元素表示的执行点的类的完全限定名称。
String getFileName() 返回包含此堆栈跟踪元素表示的执行点的源文件的名称。
int getLineNumber() 返回包含此堆栈跟踪元素表示的执行点的源行的行号。
String getMethodName() 返回包含此堆栈跟踪元素表示的执行点的方法的名称。
int hashCode() 返回此堆栈跟踪元素的哈希码值。
boolean isNativeMethod() 如果包含此堆栈跟踪元素表示的执行点的方法是本机方法,则返回 true。
String toString() 返回此堆栈跟踪元素的字符串表示形式。
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait

构造函数详细信息

StackTraceElement

public StackTraceElement(String declaringClass, String methodName, String fileName, int lineNumber)

创建表示指定执行点的堆栈跟踪元素。

参数:

参数名称 参数描述
declaringClass 包含堆栈跟踪元素表示的执行点的类的完全限定名称
methodName 包含由堆栈跟踪元素表示的执行点的方法的名称
fileName 包含堆栈跟踪元素表示的执行点的文件的名称,如果此信息不可用,则返回 null
lineNumber 包含此堆栈跟踪元素表示的执行点的源行的行号,如果此信息不可用,则为负数。 值为 -2 表示包含执行点的方法是本机方法

Throws:

Throw名称 Throw描述
NullPointerException 如果 declaringClass 或 methodName 为 null

方法详情

getFileName

public String getFileName()

返回包含此堆栈跟踪元素表示的执行点的源文件的名称。 通常,这对应于相关类文件的 SourceFile 属性(根据 Java 虚拟机规范,第 4.7.7 节)。 在某些系统中,名称可能指代文件以外的某些源代码单元,例如源存储库中的条目。

返回:

包含此堆栈跟踪元素表示的执行点的文件的名称,如果此信息不可用,则为 null。

getLineNumber

public int getLineNumber()

返回包含此堆栈跟踪元素表示的执行点的源行的行号。 通常,这是从相关类文件的 LineNumberTable 属性派生的(根据 Java 虚拟机规范,第 4.7.8 节)。

返回:

包含此堆栈跟踪元素表示的执行点的源行的行号,如果此信息不可用,则为负数。

getClassName

public String getClassName()

返回包含此堆栈跟踪元素表示的执行点的类的完全限定名称。

返回:

包含此堆栈跟踪元素表示的执行点的类的完全限定名称。

getMethodName

public String getMethodName()

返回包含此堆栈跟踪元素表示的执行点的方法的名称。 如果执行点包含在实例或类初始化程序中,则此方法将根据 Java 虚拟机规范的第 3.9 节返回适当的特殊方法名称,<init> 或 <clinit>。

返回:

包含此堆栈跟踪元素表示的执行点的方法的名称。

isNativeMethod

public boolean isNativeMethod()

如果包含此堆栈跟踪元素表示的执行点的方法是本机方法,则返回 true。

返回:

如果包含此堆栈跟踪元素表示的执行点的方法是本机方法,则为 true。

toString

public String toString()

返回此堆栈跟踪元素的字符串表示形式。此字符串的格式取决于实现,但以下示例可被视为典型:

  • “MyClass.mash(MyClass.java:9)” - 这里,“MyClass”是包含此堆栈跟踪元素表示的执行点的类的完全限定名称,“mash”是包含执行点,“MyClass.java”是包含执行点的源文件,“9”是包含执行点的源行的行号。
  • “MyClass.mash(MyClass.java)” - 同上,但行号不可用。
  • “MyClass.mash(Unknown Source)” - 同上,但文件名和行号都不可用。
  • “MyClass.mash(Native Method)” - 同上,但是文件名和行号都不可用,包含执行点的方法已知是本地方法。

覆盖:

类 Object 中的 toString

返回:

对象的字符串表示形式。

equals

public boolean equals(Object obj)

如果指定对象是另一个 StackTraceElement 实例,表示与此实例相同的执行点,则返回 true。 两个堆栈跟踪元素 a 和 b 相等当且仅当:

     equals(a.getFileName(), b.getFileName()) &&
     a.getLineNumber() == b.getLineNumber()) &&
     equals(a.getClassName(), b.getClassName()) &&
     equals(a.getMethodName(), b.getMethodName())

其中 equals 具有 Objects.equals 的语义。

覆盖:

类 Object 中的等于

参数:

参数名称 参数描述
obj 要与此堆栈跟踪元素进行比较的对象。

返回:

如果指定对象是另一个 StackTraceElement 实例,则表示与此实例相同的执行点,则为 true。

hashCode

public int hashCode()

返回此堆栈跟踪元素的哈希码值。

覆盖:

类 Object 中的 hashCode

返回:

此对象的哈希码值。