鸿蒙OS开发文档 鸿蒙OS StackTraceElement

2024-02-25 开发教程 鸿蒙OS开发文档 匿名 2

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)创建表示指定执行点的堆栈跟踪元素。

方法总结

修饰符和类型方法描述
booleanequals(Object obj)如果指定对象是另一个 StackTraceElement 实例,表示与此实例相同的执行点,则返回 true。
StringgetClassName()返回包含此堆栈跟踪元素表示的执行点的类的完全限定名称。
StringgetFileName()返回包含此堆栈跟踪元素表示的执行点的源文件的名称。
intgetLineNumber()返回包含此堆栈跟踪元素表示的执行点的源行的行号。
StringgetMethodName()返回包含此堆栈跟踪元素表示的执行点的方法的名称。
inthashCode()返回此堆栈跟踪元素的哈希码值。
booleanisNativeMethod()如果包含此堆栈跟踪元素表示的执行点的方法是本机方法,则返回 true。
StringtoString()返回此堆栈跟踪元素的字符串表示形式。
从类 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

返回:

此对象的哈希码值。