Класс Throwable
Класс Throwable - это базовый класс для всех ошибок и исключений
в Java. Он находится на вершине иерархии классов, которые могут быть
перехвачены с помощью конструкции try-catch и выброшены с помощью
ключевого слова throw. Класс Throwable предоставляет
основные методы для работы с ошибками: получение сообщения, причины,
трассировки стека и подавленных исключений. Все остальные классы ошибок,
такие как Exception и Error, являются его наследниками.
Класс Throwable имеет два основных конструктора: без параметров
и с параметром - сообщением об ошибке. Также существуют конструкторы,
принимающие сообщение и причину (другое исключение), а также флаг
разрешения подавления исключений.
Синтаксис
public class Throwable extends Object implements Serializable
Throwable()
Throwable(String message)
Throwable(String message, Throwable cause)
Throwable(Throwable cause)
Throwable(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace)
Основные методы
Класс Throwable предоставляет следующие основные методы:
getMessage - возвращает сообщение об ошибке;
getCause - возвращает причину возникновения исключения;
printStackTrace - выводит трассировку стека в стандартный поток ошибок;
getStackTrace - возвращает массив элементов трассировки стека;
addSuppressed - добавляет подавленное исключение.
Пример
Давайте создадим собственное исключение, унаследованное от
Throwable, и выбросим его:
public class Main
{
public static void main(String[] args)
{
try
{
throw new Throwable("Something went wrong");
}
catch (Throwable e)
{
System.out.println(e.getMessage());
}
}
}
Результат выполнения кода:
"Something went wrong"
Пример
Давайте создадим исключение с указанием причины и получим её через
метод getCause:
public class Main
{
public static void main(String[] args)
{
Throwable cause = new Throwable("Root cause");
Throwable error = new Throwable("Wrapper error", cause);
System.out.println(error.getMessage());
System.out.println(error.getCause().getMessage());
}
}
Результат выполнения кода:
"Wrapper error"
"Root cause"
Пример
Давайте получим трассировку стека исключения в виде массива элементов:
public class Main
{
public static void main(String[] args)
{
try
{
throw new Throwable("Test error");
}
catch (Throwable e)
{
StackTraceElement[] trace = e.getStackTrace();
System.out.println(trace.length > 0);
}
}
}
Результат выполнения кода:
true
Смотрите также
-
ключевое слово
throw,
которое выбрасывает исключение -
конструкция
try,
которая начинает блок обработки исключений -
блок
catch,
который перехватывает исключения -
метод
getMessage,
который возвращает сообщение об ошибке