Spec-Zone .ru
спецификации, руководства, описания, API
Содержание | Предыдущий | Следующий | Индекс

20.22 Класс java.lang.Throwable и его Подклассы

throw оператору (§14.16) разрешают бросить только экземпляры класса Throwable и его подклассы. Экземпляры двух подклассов, Error и Exception , традиционно используются, чтобы указать, что произошли исключительные ситуации. Как правило, эти экземпляры недавно создаются в контексте исключительной ситуации, чтобы включать релевантную информацию (такую как данные трассировки стека).

Следующий список показывает иерархические отношения всех классов исключений, предопределенных в пакете java.lang языком Java:


Throwable
	Error
		LinkageError
			ClassCircularityError
			ClassFormatError
			ExceptionInInitializerError
IncompatibleClassChangeError
AbstractMethodError 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 class Throwable {
	public Throwable();
	public Throwable(String message);
	public String toString();
	public String getMessage();
	public Throwable fillInStackTrace();
	public void printStackTrace();
	public void printStackTrace(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), тогда результатом является связь трех строк:

Если это 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

free hit counter