30 лучших вопросов и ответов на собеседовании по обработке исключений [для новичков и опытных]
Опубликовано: 2020-09-29Обработка исключений — это концепция, реализованная в алгоритмах для обработки возможных ошибок времени выполнения, которые могут нарушить нормальный ход программы. Вот некоторые из ошибок, которые можно обработать с помощью этой концепции:
- Класснотфаундексцептион
- IOException
- SQLException
- RemoteException
- Исключение во время выполнения:
- Арифметическое исключение
- Исключение нулевого указателя
- NumberFormatException
- Индексаутофбаундсексцептион
- ArrayIndexOutOfBoundsException
- StringIndexOutOfBoundsException
Достоинством этой реализации является предотвращение сбоя программы в случае возникновения исключения при выполнении программы. Без обработки исключений программа выдаст ошибку при обнаружении исключения, а остальная часть программы не будет выполнена. Однако реализация этой концепции даст обходной путь, при котором остальная часть программы выполняется, если они независимы по отношению к возникшему исключению. Чтобы узнать больше, ознакомьтесь с нашими курсами по науке о данных.
Прочтите: обязательно прочитайте 30 вопросов и ответов из интервью с Selenium: полное руководство
Вопросы и ответы на собеседовании по обработке исключений
1. Что вы подразумеваете под исключением?
Это ненормальное состояние, которое иногда возникает при выполнении программы. Это нарушает нормальный ход программы. Это исключение необходимо обработать; в противном случае это может привести к внезапному завершению программы.
2. Объясните, как можно обрабатывать исключения в Java. Каков механизм обработки исключений, стоящий за процессом?

Механизм обработки исключений состоит из трех частей. Они называются:
- Пробный блок: часть кода, которая сначала пытается быть выполнена и отслеживается на предмет любых исключений, которые могут возникнуть.
- Блок перехвата: если какое-либо исключение выдается блоком try, оно перехватывается этим разделом кода.
- Блок finally: код в этом разделе всегда выполняется независимо от исключений, перехваченных в блоке try, если таковые имеются. Даже если исключения нет, код под этим блоком будет выполнен.
3. Можно ли оставить другие операторы между блоками «try», «catch» и «finally»?
Не рекомендуется включать какие-либо утверждения между разделами Блоки try, catch и final, поскольку они образуют единый блок механизма обработки исключений.
пытаться
{
//Код, который отслеживается на наличие исключений.
}
//Здесь нельзя хранить операторы
поймать (исключение ex)
{
// Перехватываем исключения, генерируемые блоком try, если таковые имеются.
}
//Здесь нельзя хранить операторы
наконец
{
//Этот блок всегда выполняется независимо от исключений.
}
4. Можно ли будет включить только блок «try» без блоков «catch» и «finally»?
Это приведет к ошибке компиляции. Необходимо, чтобы за блоком «try» следовал либо блок «catch», либо блок «finally», если не оба. Либо один из блоков «catch» или «finally» необходим, чтобы поток обработки исключений не прерывался.
5. Можно ли будет сохранить операторы после блока finally, если управление возвращается из самого блока finally?
Это приведет к ошибке недостижимого блока catch. Это связано с тем, что управление будет возвращаться из самого блока «finally». Компилятор не сможет выполнить код после строки с исключением. Вот почему выполнение покажет ошибку недостижимого кода.
Мечтаете учиться за границей? Вот правильная программа для вас6. Объясните ошибку недостижимого блока catch.
В случае нескольких блоков catch порядок размещения блоков catch — от наиболее специфичных к наиболее общим. То есть сначала должны идти подклассы исключения, а потом уже суперклассы. В случае, если суперклассы сохраняются первыми, а за ними следуют подклассы, компилятор покажет ошибку недостижимого блока catch.
открытый класс ExceptionHandling
{
public static void main (аргументы String [])
{
пытаться
{
int i = Integer.parseInt («тест»);
//Этот оператор вызовет исключение NumberFormatException, //поскольку заданный ввод является строкой, а указанный формат //целочисленный.
}
поймать (исключение ex)
{
System.out.println("Этот блок обрабатывает все типы исключений");
//В этом блоке могут обрабатываться все виды исключений, //поскольку это суперкласс исключений.
}
поймать (NumberFormatException ex)
{
// Это даст ошибку времени компиляции
//Этот блок станет недоступным, так как
//исключение уже было бы перехвачено вышеуказанным блоком //catch
}
}
}
7. Рассмотрим три оператора в блоке try: оператор1, оператор2 и оператор3. За ним следует блок catch для перехвата исключений, возникших во время выполнения блока try. Предположим, что исключение вызвано оператором2. Как вы думаете, будет ли выполнен оператор 3?
Оператор 3 не будет выполнен. Если блок try в любой момент выдает исключение, оставшийся после исключения код выполняться не будет. Вместо этого управление потоком перейдет непосредственно к блоку catch.
8. Различайте ошибки и исключения в Java.
Ключевое различие между ошибкой и исключением заключается в том, что ошибка вызвана средой, в которой работает JVM (виртуальная машина Java), а исключения вызваны самой программой. Например, OutOfMemory — это ошибка, возникающая, когда JVM исчерпывает свою память.
Но NullPointerException — это исключение, которое возникает, когда программа пытается получить доступ к нулевому объекту. Восстановление после ошибки невозможно. Следовательно, единственным решением ошибки является прекращение выполнения. Однако можно обойти исключения, используя блоки try и catch или возвращая исключения обратно вызывающей функции.
Обязательно к прочтению: Java-интервью, вопросы и ответы
9. Какие существуют типы исключений? Объясните их.
Существует два типа исключений:
Проверенные исключения
Тип исключений, которые известны и распознаются компилятором. Эти исключения можно проверить только во время компиляции. Поэтому их также называют исключениями времени компиляции. Их можно обработать либо с помощью блоков try и catch, либо с помощью предложения throw. Если эти исключения не обрабатываются должным образом, они приведут к ошибкам времени компиляции. Примеры включают подклассы java.lang.Exception, за исключением RunTimeException.
Непроверенные исключения
Тип исключений, которые не распознаются компилятором. Они возникают только во время выполнения. Следовательно, они также называются исключениями времени выполнения. Они не проверяются во время компиляции. Следовательно, даже после успешной компиляции они могут привести к преждевременному завершению программы, если не будут обработаны должным образом. Примеры включают подклассы java.lang.RunTimeException и java.lang.Error.
10. Какова иерархия исключений в Java?
java.lang.Throwable — это суперкласс всех ошибок и исключений в Java. Этот класс расширяет класс java.lang.Object. Аргументом блока catch должен быть только его тип или тип его подкласса. Класс Throwable включает в себя два подкласса:
- java.lang.Error : это суперкласс для всех типов ошибок в Java. Общие ошибки, включенные в это:
- java.lang.VirtualMachineError: Под этим —
- StackOverFlowError
- Аутофмемориеррор
- java.lang.AssertionError
- java.lang.LinkageError: Под этим —
- ноклассдеффаундеррор
- Инсовместимыйклассчанжееррор
- java.lang.VirtualMachineError: Под этим —
- java.lang.Exception: это суперкласс всех типов исключений в Java. Общие исключения из этого правила:
- RunTimeException
- Арифметическое исключение
- NumberFormatException
- Исключение нулевого указателя
- ArrayIndexOutOfBoundsException
- ClassCastException
- java.lang.InterruptedException
- java.lang.IOException
- java.lang.SQLException
- java.lang.ParseException
- RunTimeException
11. Что такое исключения во время выполнения в Java? Приведите несколько примеров.
Исключения, возникающие во время выполнения, называются исключениями времени выполнения. Компилятор не может распознать эти исключения, например непроверенные исключения. Он включает все подклассы java.lang.RunTimeException и java.lang.Error. Примеры включают NumberFormatException, NullPointerException, ClassCastException, ArrayIndexOutOfBoundException, StackOverflowError и т. д.
12. Определите OutOfMemoryError в Java.
Это подкласс java.lang.Error, который возникает, когда JVM не хватает памяти.
13. Различия между NoClassDefFoundError и ClassNotFoundException в Java.
И NoClassDefFoundError, и ClassNotFoundException возникают, когда определенный класс не найден во время выполнения. Однако они происходят по разным сценариям. NoClassDefFoundError возникает, когда возникает ошибка из-за того, что определенный класс присутствовал во время компиляции, но отсутствовал во время выполнения. ClassNotFoundException возникает, когда возникает исключение для приложения, пытающегося загрузить класс во время выполнения, который не обновляется в пути к классам.
14. Выполняется ли блок «finally», если какой-либо из блоков «try» или «catch» возвращает управление?
Блок «finally» всегда выполняется независимо от того, возвращают ли блоки try или catch управление или нет.
15. Можно ли создать исключение вручную? Если да, объясните как.
Исключение можно кинуть вручную. Это делается с помощью ключевого слова 'throw'. Синтаксис для создания исключения вручную:

бросить InstanceOfThrowableType;
Вот пример использования ключевого слова throw для создания исключения вручную.
пытаться
{
NumberFormatException ex = new NumberFormatException(); //Здесь мы явно создаем объект для NumberFormatException
бросить экс; // бросаем объект NumberFormatException явно, используя ключевое слово throw
}
поймать (NumberFormatException ex)
{
System.out.println("В этом блоке может быть перехвачен явно созданный объект NumberFormatException.");
}
Читайте: 35 лучших весенних вопросов и ответов на интервью: полное руководство
16. Что вы подразумеваете под повторной выдачей исключения в Java?
Исключения, возникающие в блоке try, обрабатываются в блоке catch. Если блок catch не может обработать это исключение, возможно, он может повторно сгенерировать то же самое исключение, используя ключевое слово throw. Этот механизм называется повторным генерированием исключения. Реализация выглядит следующим образом:
пытаться
{
Строка s = ноль;
System.out.println(s.length()); //Это выражение вызывает исключение NullPointerException
}
поймать (NullPointerException ex)
{
System.out.println("Здесь поймано исключение NullPointerException");
бросить экс; //Повторное создание исключения NullPointerException
}
17. Почему в Java вы используете ключевое слово throws?
Если метод может генерировать исключение, если его невозможно обработать, он должен указать это исключение с помощью ключевого слова 'throws'. Это будет полезно вызывающим функциям этого метода при обработке этого исключения. Синтаксис использования ключевого слова 'throws' следующий:
return_type имя_метода (список_параметров) выдает список_исключений
{
//код
}
Здесь exception_list — это список исключений, которые могут быть вызваны методом. Эти исключения должны быть разделены запятыми. Пример кода:
открытый класс ExceptionHandling
{
public static void main (аргументы String [])
{
пытаться
{
методWithThrows();
}
поймать (NullPointerException ex)
{
System.out.println("Здесь будет перехвачено исключение NullPointerException, созданное методом methodWithThrows()");
}
}
метод static voidWithThrows() выдает исключение NullPointerException
{
Строка s = ноль;
System.out.println(s.length()); //Это выражение вызывает исключение NullPointerException
}
}
18. Часто рекомендуется оставлять операции очистки, такие как закрытие ресурсов БД, внутри блока «наконец». Почему это необходимо?
Блок «finally» всегда выполняется независимо от того, возбуждаются ли исключения в блоке «try» или перехватываются ли возбужденные исключения в блоке «catch» или нет. Сохранение операций очистки в блоке «finally» гарантирует выполнение этих операций в любом случае и не будет зависеть от исключений, которые могут возникать или не возникать.
19. Как бы вы различали final, finally и finalize в Java?
Во-первых, «final» — это ключевое слово, которое можно использовать, чтобы сделать переменную, метод или класс неизменяемыми. Проще говоря, если переменная объявлена как final, после ее инициализации ее значение не может быть изменено. Если метод объявлен как final, его нельзя переопределить или изменить в подклассе. Если класс объявлен как final, он не может быть расширен в другие классы.
Во-вторых, «finally» — это блок, который используется при обработке исключений вместе с блоками «try» и «catch». Этот блок всегда выполняется независимо от возбужденного исключения или обработки возбужденного исключения. Обычно этот блок используется для выполнения операций очистки, чтобы закрыть такие ресурсы, как подключение к базе данных, ресурсы ввода-вывода и т. д.
В-третьих, метод finalize() является защищенным методом. Он принадлежит классу java.lang.Object. Каждый класс, созданный в Java, наследует этот метод. Поток сборщика мусора вызывает этот метод перед удалением объекта из памяти. Перед удалением объекта из памяти этот метод используется для выполнения некоторых операций очистки.
protected void finalize() выбрасывает Throwable
{
//Операции очистки
}
20. Что такое настраиваемые исключения в java?
Классы исключений могут создаваться в Java в соответствии с требованиями потока программы. Эти исключения называются пользовательскими исключениями. Их также называют настроенными исключениями. Эти исключения должны расширять любой из классов в иерархии исключений.
21. Как бы вы объяснили ClassCastException в Java?
Когда JVM не может преобразовать объект одного типа в другой тип, возникает это исключение. Это RunTimeException.
22. Различайте throw, throws и throwable в Java.
Во-первых, ключевое слово 'throw' используется для ручного создания исключения в Java. Используя это ключевое слово, можно вызвать исключение из любого метода или блока. Однако важно, чтобы исключение относилось к типу класса java.lang.Throwable или принадлежало к одному из подклассов класса java.lang.Throwable.
Во-вторых, ключевое слово throws используется в сигнатуре метода в Java. Если метод способен генерировать исключения, это указывается этим методом. Упомянутые исключения обрабатываются соответствующими вызывающими функциями. Это делается либо с помощью блоков try и catch, либо с помощью ключевого слова throws.
В-третьих, суперкласс для всех типов ошибок и исключений в Java называется Throwable. Он является членом пакета java.lang. JVM или оператор throw вызывают только экземпляры этого класса или его подклассов. Блок catch должен содержать только один аргумент и относиться к этому типу или его подклассам. В случае создания настраиваемых исключений они также должны расширять этот класс.
23. Объясните StackOverflowError в Java.
Это ошибка, выдаваемая JVM при переполнении стека во время выполнения.
24. Можно ли переопределить метод суперкласса, который генерирует непроверенное исключение с проверенными исключениями в подклассе?
Это невозможно, потому что если метод суперкласса выдает непроверенное исключение, оно будет переопределено в подклассе с тем же исключением или любыми другими непроверенными исключениями. Но его нельзя переопределить проверенными исключениями.
25. Определите связанные исключения в Java.
В программе одно исключение может вызвать множество исключений, вызывая эффект домино. Это вызывает цепочку исключений. Полезно знать местоположение фактической причины исключения. Это возможно с помощью функции связанных исключений в Java. Это было введено начиная с JDK 1.4. Для реализации связанных исключений в Java в класс Throwable включены два новых конструктора и два новых метода. Эти,
Конструкторы класса Throwable:
- Throwable (причина Throwable): причиной является исключение, которое вызывает текущее исключение.
- Throwable(String msg, Throwable причина): Строка msg является сообщением об исключении. Исключение, которое вызывает текущее исключение, является причиной здесь.
Методы класса Throwable:
- Метод getCause(): этот метод возвращает реальную причину возникновения исключения.
- Метод initCause(Throwable Reason): причина вызывающего исключения устанавливается этим методом.
26. Какой класс определен как суперкласс для всех типов ошибок и исключений в Java?
Суперкласс для всех типов ошибок и исключений — java.lang.Throwable в Java.
27. Что можно считать правильной комбинацией блоков try, catch и finally?
Комбинация блока try и catch.
пытаться
{
// пробный блок
}
поймать (исключение ex)
{
// ловим блок
}
Комбинация try и finally block.
пытаться
{
// пробный блок
}
наконец
{
// наконец блок
}
Комбинация всех трех: попробуй, заблокируй, наконец заблокируй.
пытаться
{
// пробный блок
}
поймать (исключение ex)
{
// ловим блок
}
наконец
{
// наконец блок
}
28. Почему вы используете метод printStackTrace()?
Этот метод используется для печати подробной информации о возникшем исключении.
29. Какие есть примеры проверенных исключений?
Некоторые примеры проверенных исключений включают ClassNotFoundException, SQLException и IOException.

30. Какие есть примеры непроверенных исключений?
Некоторые примеры непроверенных исключений включают NullPointerException, ArrayIndexOutOfBoundsException и NumberFormatException.
Читайте также: Обязательно прочитайте 47 вопросов и ответов на собеседовании OOPS для первокурсников и опытных
Подведение итогов
Если вам интересно узнать больше о больших данных, ознакомьтесь с дипломом PG upGrad & IIIT-B по разработке программного обеспечения с полным стеком, который предназначен для работающих профессионалов и предлагает более 500 часов тщательного обучения, более 9 проектов и заданий, IIIT -B статус выпускника, практические практические проекты и помощь в трудоустройстве в ведущих фирмах.
Если вы заинтересованы в изучении науки о данных и выбираете карьеру в этой области, ознакомьтесь с программой Executive PG IIIT-B & upGrad в области науки о данных, которая создана для работающих профессионалов и предлагает более 10 тематических исследований и проектов, практические практические семинары. , наставничество с отраслевыми экспертами, индивидуальные встречи с отраслевыми наставниками, более 400 часов обучения и помощь в трудоустройстве в ведущих фирмах.
