Spec-Zone .ru
спецификации, руководства, описания, API
|
java.lang.Throwable
и его Подклассыthrow
оператору (§14.16) разрешают бросить только экземпляры класса Throwable
и его подклассы. Экземпляры двух подклассов, Error
и Exception
, традиционно используются, чтобы указать, что произошли исключительные ситуации. Как правило, эти экземпляры недавно создаются в контексте исключительной ситуации, чтобы включать релевантную информацию (такую как данные трассировки стека). Следующий список показывает иерархические отношения всех классов исключений, предопределенных в пакете java.lang
языком Java:
Условно, классThrowable
Error
LinkageError
ClassCircularityError
ClassFormatError
ExceptionInInitializerError
IncompatibleClassChangeErrorAbstractMethodError
IllegalAccessError
InstantiationError
NoSuchFieldError
NoSuchMethodError
NoClassDefFoundError
UnsatisfiedLinkError
VerifyError
VirtualMachineError
InternalError
OutOfMemoryError
StackOverflowError
UnknownError
ThreadDeath
Exception
ClassNotFoundException
CloneNotSupportedException
IllegalAccessException
InstantiationException
InterruptedException
RuntimeException
ArithmeticException
ArrayStoreException
ClassCastException
IllegalArgumentException
IllegalThreadStateException
NumberFormatException
IllegalMonitorStateException
IndexOutOfBoundsException
NegativeArraySizeException
NullPointerException
SecurityException
Throwable
и у всех его подклассов есть два конструктора, тот, который не берет параметров и того, который берет a String
параметр, который может использоваться, чтобы произвести сообщение об ошибке. Это верно для всех классов, показанных выше с одним исключением: ExceptionInInitializerError
. У этих предопределенных классов иначе нет никакого нового контента; они просто наследовали методы от класса Throwable
.
public classThrowable
{ publicThrowable
(); publicThrowable
(String message); public StringtoString
(); public StringgetMessage
(); public ThrowablefillInStackTrace
(); public voidprintStackTrace
(); public voidprintStackTrace
(java.io.PrintStream s); }
20.22.1 public
Throwable
()
Этот конструктор инициализирует недавно создаваемый Throwable
объект с null
как его строка сообщения об ошибке. Кроме того, метод fillInStackTrace
(§20.22.5) вызывают для этого объекта.
20.22.2 public
Throwable
(String message)
Этот конструктор инициализирует недавно создаваемый Throwable
объект, сохраняя ссылку на строку сообщения об ошибке s
для более позднего извлечения getMessage
метод (§20.22.3). Кроме того, метод fillInStackTrace
(§20.22.5) вызывают для этого объекта.
20.22.3 public String
getMessage
()
Если это Throwable
объект создавался со строкой сообщения об ошибке (§20.22.2), затем ссылка на ту строку возвращается.
Если это Throwable
объект создавался без строки сообщения об ошибке (§20.22.1), тогда null
возвращается.
20.22.4 public String
toString
()
Если это Throwable
объект создавался со строкой сообщения об ошибке (§20.22.2), тогда результатом является связь трех строк:
": "
(двоеточие и пространство)
getMessage
метод (§20.22.3) для этого объекта Throwable
объект создавался без строки сообщения об ошибке (§20.22.1), тогда имя фактического класса этого объекта возвращается.20.22.5 public Throwable
fillInStackTrace
()
Этот метод записывает в пределах этого Throwable
объектная информация о текущем состоянии стековых фреймов для текущего потока.
20.22.6 public void
printStackTrace
()
Этот метод печатает трассировку стека для этого Throwable
объект на потоке вывода ошибок, который является значением поля System.err
(§20.18.3). Первая строка вывода содержит результат toString
метод (§20.22.4) для этого объекта. Остающиеся строки представляют данные, ранее записанные методом fillInStackTrace
(§20.22.5). Формат этой информации зависит от реализации, но следующий пример может быть расценен как типичный:
java.lang.NullPointerException at MyClass.mash(MyClass.java:9) at MyClass.crunch(MyClass.java:6) at MyClass.main(MyClass.java:3)Этот пример был произведен, выполняя программу:
class MyClass { public static void main(String[] argv) { crunch(null); }
static void crunch(int[] a) { mash(a); }
static void mash(int[] b) { System.out.println(b[0]); }
Содержание | Предыдущий | Следующий | Индекс
Спецификация языка Java (HTML, сгенерированный Блинчиком "сюзет" Pelouch 24 февраля 1998)
Авторское право © Sun Microsystems, Inc 1996 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к doug.kramer@sun.com