Класс ClassCastException
Класс ClassCastException наследуется от RuntimeException и выбрасывается, когда код пытается привести объект к типу, которому он не принадлежит. В первом параметре конструктора можно передать сообщение об ошибке, во втором - причину исключения (другой объект Throwable). Это необрабатываемое исключение, поэтому компилятор не требует его перехвата.
Синтаксис
throw new ClassCastException();
throw new ClassCastException("Message");
throw new ClassCastException("Message", cause);
Пример
Давайте попробуем привести объект типа Object, содержащий строку, к типу Integer:
public class Main
{
public static void main(String[] args)
{
Object obj = "12345";
Integer num = (Integer) obj;
System.out.println(num);
}
}
Результат выполнения кода:
Exception in thread "main" java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Integer
Пример
Давайте перехватим исключение ClassCastException с помощью конструкции try-catch и выведем сообщение об ошибке:
public class Main
{
public static void main(String[] args)
{
Object obj = "abcde";
try
{
Integer num = (Integer) obj;
System.out.println(num);
}
catch (ClassCastException e)
{
System.out.println("Caught: " + e.getMessage());
}
}
}
Результат выполнения кода:
"Caught: class java.lang.String cannot be cast to class java.lang.Integer (java.lang.String and java.lang.Integer are in module java.base of loader 'bootstrap')"
Пример
Давайте создадим собственное исключение ClassCastException с сообщением и выбросим его вручную:
public class Main
{
public static void main(String[] args)
{
try
{
throw new ClassCastException("Custom cast error");
}
catch (ClassCastException e)
{
System.out.println("Caught: " + e.getMessage());
}
}
}
Результат выполнения кода:
"Caught: Custom cast error"
Смотрите также
-
класс
RuntimeException,
который является родителем для многих исключений -
класс
ClassNotFoundException,
который возникает при загрузке класса -
конструкция
try,
которая позволяет перехватывать исключения -
конструкция
catch,
которая обрабатывает пойманное исключение