Как разрешить исключения класса Cast в Java?

Опубликовано: 30 Ноября, 2021

Неизвестное нежелательное событие, которое нарушило нормальный ход программы, называется исключением. В большинстве случаев исключения вызваны нашей программой, и их можно исправить. Пример: если наша программа требует чтения данных из удаленного файла, находящегося в США, во время выполнения, если удаленный файл недоступен, мы получим исключение RuntimeException с сообщением fileNotFoundException. Если возникает исключение fileNotFoundException, мы можем предоставить программе локальный файл для чтения и продолжения остальной части программы в обычном режиме.

В Java есть в основном два типа исключений:

1. Проверяемое исключение: исключение, которое проверяется компилятором на предмет плавного выполнения программы во время выполнения, называется проверенным исключением. В нашей программе, если есть вероятность появления проверенных исключений, мы должны обязательно обработать это проверенное исключение (либо с помощью ключевого слова try-catch, либо с помощью ключевого слова throws), иначе мы получим ошибку времени компиляции.

Примеры проверенных исключений: classNotFoundException, IOException, SQLException и т. Д.

2. Непроверенное исключение: исключения, которые не проверяются компилятором, независимо от того, обрабатывает ли программист такой тип исключения или нет, называются непроверенным исключением.

Примеры непроверенных исключений: ArithmeticException, ArrayStoreException и т. Д.

Независимо от того, отмечено ли исключение или нет, каждое исключение возникает во время выполнения только в том случае, если нет возможности возникновения какого-либо исключения во время компиляции.

ClassCastException: это дочерний класс RuntimeException и, следовательно, это непроверенное исключение. Это исключение автоматически возникает JVM всякий раз, когда мы пытаемся неправильно привести тип класса из одного типа в другой, то есть когда мы пытаемся преобразовать тип родительского объекта в дочерний тип или когда мы пытаемся преобразовать тип объекта в подкласс, которым он не является пример.

В приведенной ниже программе мы создаем объект o типа Object и приводим тип этого объекта o к объекту String s. Поскольку мы знаем, что класс Object является родительским классом для всех классов в java, и поскольку мы пытаемся привести тип родительского объекта к его дочернему типу, в конечном итоге мы получаем java.lang.ClassCastException

Ява

// import required pacakages
import java.io.*;
import java.lang.*;
import java.util.*;
// driver class
class geeks {
// main method
public static void main(String[] args)
{
try {
// creating an object
Object o = new Object();
// type casting the object o to string which
// give the classcasted exception because we
// type cast an parent type to its child type.
String s = (String)o;
System.out.println(s);
}
catch (Exception e) {
System.out.println(e);
}
}
}
Выход
 java.lang.ClassCastException: класс java.lang.Object не может быть преобразован в класс java.lang.String (java.lang.Object и java.lang.String находятся в модуле java.base загрузчика bootstrap)

Чтобы иметь дело с ClassCastException, будьте осторожны, когда вы пытаетесь преобразовать тип объекта класса в другой класс, убедитесь, что новый тип принадлежит одному из его родительских классов, или не пытайтесь преобразовать тип родительского объекта в его дочерний тип. При использовании коллекций мы можем предотвратить исключение ClassCastException с помощью универсальных шаблонов, поскольку универсальные шаблоны обеспечивают проверку во время компиляции.

Ниже представлена реализация постановки задачи:

Ява

// import required pacakages
import java.io.*;
import java.lang.*;
import java.util.*;
// driver class
class geeks {
// main method
public static void main(String[] args)
{
try {
// creating an object
String s = "GFG" ;
Object o = (Object)s;
// Object class is parent class of every class
// Hence exception doesn't occur.
System.out.println(o);
}
catch (Exception e) {
System.out.println(e);
}
}
}
Выход
 GFG

Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .