Класс StackTraceElement
- java.lang.Object
- java.lang.StackTraceElement
- Все реализованные интерфейсы:
Serializable
public final class StackTraceElement extends Object implements Serializable
Элемент в стеке вызовов, возвращаемый методом Throwable.getStackTrace(). Каждый элемент представляет собой отдельный кадр стека. Все кадры стека, кроме верхнего, представляют вызов метода. Кадр в верхней части стека представляет собой точку выполнения, в которой был сгенерирован стек вызовов. Как правило, это точка, в которой был создан исключительный объект, соответствующий стеку вызовов.
- С момента:
- 1.4
- См. также:
- Сериализованная форма
Конструкторы
| Конструктор | Описание |
|---|---|
StackTraceElement(String declaringClass,
String methodName,
String fileName,
int lineNumber) | Создаёт элемент стека вызовов, представляющий указанную точку выполнения. |
StackTraceElement(String classLoaderName,
String moduleName,
String moduleVersion,
String declaringClass,
String methodName,
String fileName,
int lineNumber) | Создаёт элемент стека вызовов, представляющий указанную точку выполнения. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean | equals(Object obj) | Возвращает true, если указанный объект является другим экземпляром |
String | getClassLoaderName() | Возвращает имя загрузчика классов класса, содержащего точку выполнения, представленную этим элементом стека вызовов. |
String | getClassName() | Возвращает полное квалифицированное имя класса, содержащего точку выполнения, представленную этим элементом стека вызовов. |
String | getFileName() | Возвращает имя исходного файла, содержащего точку выполнения, представленную этим элементом стека вызовов. |
int | getLineNumber() | Возвращает номер строки исходного файла, содержащей точку выполнения, представленную этим элементом стека вызовов. |
String | getMethodName() | Возвращает имя метода, содержащего точку выполнения, представленную этим элементом стека вызовов. |
String | getModuleName() | Возвращает имя модуля, содержащего точку выполнения, представленную этим элементом стека вызовов. |
String | getModuleVersion() | Возвращает версию модуля, содержащего точку выполнения, представленную этим элементом стека вызовов. |
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)Создаёт элемент стека вызовов, представляющий указанную точку выполнения. module name и module version элемента стека вызовов будут null.
- Параметры:
-
declaringClass- полное квалифицированное имя класса, содержащего точку выполнения, представленную элементом стека вызовов -
methodName- имя метода, содержащего точку выполнения, представленную элементом стека вызовов -
fileName- имя файла, содержащего точку выполнения, представленную элементом стека вызовов, илиnull, если эта информация недоступна -
lineNumber- номер строки исходного файла, содержащей точку выполнения, представленную этим элементом стека вызовов, или отрицательное число, если эта информация недоступна. Значение -2 указывает, что метод, содержащий точку выполнения, является нативным - Исключения:
-
NullPointerException- еслиdeclaringClassилиmethodNameравно null - С момента:
- 1.5
StackTraceElement
public StackTraceElement(String classLoaderName,
String moduleName,
String moduleVersion,
String declaringClass,
String methodName,
String fileName,
int lineNumber)Создаёт элемент стека вызовов, представляющий указанную точку выполнения.
- Параметры:
-
classLoaderName- имя загрузчика классов, если загрузчик классов класса, содержащего точку выполнения, представленную элементом стека вызовов, имеет имя; в противном случаеnull -
moduleName- имя модуля, если класс, содержащий точку выполнения, представленную элементом стека вызовов, находится в именованном модуле; в противном случаеnull -
moduleVersion- версия модуля, если класс, содержащий точку выполнения, представленную элементом стека вызовов, находится в именованном модуле с версией; в противном случаеnull -
declaringClass- полное квалифицированное имя класса, содержащего точку выполнения, представленную элементом стека вызовов -
methodName- имя метода, содержащего точку выполнения, представленную элементом стека вызовов -
fileName- имя файла, содержащего точку выполнения, представленную элементом стека вызовов, илиnull, если эта информация недоступна -
lineNumber- номер строки исходного файла, содержащей точку выполнения, представленную этим элементом стека вызовов, или отрицательное число, если эта информация недоступна. Значение -2 указывает, что метод, содержащий точку выполнения, является нативным - Исключения:
-
NullPointerException- еслиdeclaringClassявляетсяnullилиmethodNameявляетсяnull - С момента:
- 9
Методы
getFileName
public String getFileName()
Возвращает имя исходного файла, содержащего точку выполнения, представленную этим элементом стека исключений. Как правило, это соответствует атрибуту SourceFile соответствующего файла class (согласно Спецификации виртуальной машины Java, раздел 4.7.7). В некоторых системах имя может ссылаться на какой-либо блок исходного кода, отличный от файла, например, на запись в системе управления исходным кодом.
- Возвращает:
- имя файла, содержащего точку выполнения, представленную этим элементом стека исключений, или
nullесли эта информация недоступна.
getLineNumber
public int getLineNumber()
Возвращает номер строки исходного кода, содержащей точку выполнения, представленную этим элементом стека исключений. Как правило, это выводится из атрибута LineNumberTable соответствующего файла class (согласно Спецификации виртуальной машины Java, раздел 4.7.8).
- Возвращает:
- номер строки исходного кода, содержащей точку выполнения, представленную этим элементом стека исключений, или отрицательное число, если эта информация недоступна.
getModuleName
public String getModuleName()
Возвращает имя модуля, содержащего точку выполнения, представленную этим элементом стека исключений.
- Возвращает:
- имя модуля, содержащего точку выполнения, представленную этим элементом стека исключений;
nullесли имя модуля недоступно. - С тех пор:
- 9
- См. также:
Module.getName()
getModuleVersion
public String getModuleVersion()
Возвращает версию модуля, содержащего точку выполнения, представленную этим элементом стека исключений.
- Возвращает:
- версия модуля, содержащего точку выполнения, представленную этим элементом стека исключений;
nullесли версия модуля недоступна. - С тех пор:
- 9
- См. также:
ModuleDescriptor.Version
getClassLoaderName
public String getClassLoaderName()
Возвращает имя загрузчика классов, содержащего класс, в котором представлена точка выполнения, этим элементом стека исключений.
- Возвращает:
- имя загрузчика классов, содержащего класс, в котором представлена точка выполнения, этим элементом стека исключений;
nullесли имя загрузчика классов не указано. - С тех пор:
- 9
- См. также:
ClassLoader.getName()
getClassName
public String getClassName()
Возвращает полное имя класса, содержащего точку выполнения, представленную этим элементом стека исключений.
- Возвращает:
- полное имя класса, содержащего точку выполнения, представленную этим элементом стека исключений.
getMethodName
public String getMethodName()
Возвращает имя метода, содержащего точку выполнения, представленную этим элементом стека исключений. Если точка выполнения находится в инициализаторе экземпляра или класса, этот метод вернёт соответствующее специальное имя метода, <init> или <clinit>, согласно разделу 3.9 Спецификации виртуальной машины Java.
- Возвращает:
- имя метода, содержащего точку выполнения, представленную этим элементом стека исключений.
isNativeMethod
public boolean isNativeMethod()
Возвращает true, если метод, содержащий точку выполнения, представленную этим элементом стека исключений, является методом нативными.
- Возвращает:
-
trueесли метод, содержащий точку выполнения, представленную этим элементом стека исключений, является методом нативными.
toString
public String toString()
Возвращает строковое представление этого элемента стека исключений.
- Переопределяет:
-
toStringв классеObject - Примечание API:
- Формат этой строки зависит от реализации, но следующие примеры могут считаться типичными:
- "
com.foo.loader/foo@9.0/com.foo.Main.run(Main.java:101)" - См. описание ниже. - "
com.foo.loader/foo@9.0/com.foo.Main.run(Main.java)" - Номер строки недоступен. - "
com.foo.loader/foo@9.0/com.foo.Main.run(Unknown Source)" - Не доступно ни имя файла, ни номер строки. - "
com.foo.loader/foo@9.0/com.foo.Main.run(Native Method)" - Метод, содержащий точку выполнения, является методом нативными. - "
com.foo.loader//com.foo.bar.App.run(App.java:12)" - Класс точки выполнения определён в безымянном модуле загрузчика классов с именемcom.foo.loader. - "
acme@2.1/org.acme.Lib.test(Lib.java:80)" - Класс точки выполнения определён в модулеacmeзагруженном встроенным загрузчиком классов, таким как загрузчик классов приложения. - "
MyClass.mash(MyClass.java:9)" - КлассMyClassнаходится в пути поиска классов приложения.
Первый пример показывает элемент стека исключений, состоящий из трёх элементов, разделённых
"/", за которым следуют имя исходного файла и номер строки исходного кода, содержащей точку выполнения. Первый элемент "com.foo.loader" - имя загрузчика классов. Второй элемент "foo@9.0" - имя и версия модуля. Третий элемент - метод, содержащий точку выполнения; "com.foo.Main"" - полное имя класса, и "run" - имя метода. "Main.java" - имя исходного файла, а "101" - номер строки.Если класс определён в безымянном модуле, то второй элемент опускается, как показано в "
com.foo.loader//com.foo.bar.App.run(App.java:12)".Если загрузчик классов является встроенным загрузчиком классов или не имеет имени, то первый элемент и его последующие
"/"опускаются, как показано в "acme@2.1/org.acme.Lib.test(Lib.java:80)". Если первый элемент опущен, и модуль безымянный, то второй элемент и его последующие"/"также опускаются, как показано в "MyClass.mash(MyClass.java:9)".Метод
toStringможет возвращать два разных значения для двухStackTraceElementэкземпляров, которые равны, например, один созданный через конструктор, а другой полученный изThrowableилиStackWalker.StackFrame, где реализация может выбрать опустить некоторые элементы в возвращаемой строке. - "
- Возвращает:
- строковое представление объекта.
- См. также:
Throwable.printStackTrace()
equals
public boolean equals(Object obj)
Возвращает true, если указанный объект является другим экземпляром StackTraceElement представляющим ту же точку выполнения, что и этот экземпляр. Два элемента стека исключений a и b равны тогда и только тогда, когда:
equals(a.getClassLoaderName(), b.getClassLoaderName()) &&
equals(a.getModuleName(), b.getModuleName()) &&
equals(a.getModuleVersion(), b.getModuleVersion()) &&
equals(a.getClassName(), b.getClassName()) &&
equals(a.getMethodName(), b.getMethodName())
equals(a.getFileName(), b.getFileName()) &&
a.getLineNumber() == b.getLineNumber() где equals имеет семантику Objects.equals. - Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- объект, с которым сравнивается этот элемент стека исключений. - Возвращает:
- true, если указанный объект является другим экземпляром
StackTraceElementпредставляющим ту же точку выполнения, что и этот экземпляр. - См. также:
-
Object.hashCode(),HashMap
hashCode
public int hashCode()
Возвращает значение хэш-кода для этого элемента стека исключений.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- значение хэш-кода для этого объекта.
- См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StackTraceElement.html