Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java собеседование вопросы и ответы.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
87.82 Кб
Скачать

42. Назовите несколько классов из вершины иерархии исключений в Java.

Все исключения, порождаемые от Throwable, можно разбить на три группы. Они определяются тремя базовыми типами: наследникамиThrowable- классами Error и Exception, а также наследником Exception - RuntimeException. 43. Что такое Error? В каком случае используется Error. Приведите пример Error’а.

см. ответ 41 44. Какая конструкция используется в Java для обработки исключений?

Try{} catch(Exception e){} finally{}

Если срабатывает один из блоков catch, то остальные блоки в данной конструкции try-catch выполняться не будут.

Cвойством транзакционности исключения не обладают – действия, произведенные в блоке try до возникновения исключения, не отменяются поcле его возникновения. 45. Возможно ли использование блока try-finally (без catch)?

try может быть в паре с finally, без catch. Работает это точно так же – после выхода из блока try выполняется блок finally. Это может быть полезно, например, в следующей ситуации. При выходе из метода вам надо произвести какое-либо действие. А return в этом методе стоит в нескольких местах. Писать одинаковый код перед каждым return нецелесообразно. Гораздо проще и эффективнее поместить основной код в try, а код, выполняемый при выходе – в finally. 46. Предположим, есть блок try-finally. В блоке try возникло исключение и выполнение переместилось в блок finally. В блоке finallyтоже возникло исключение. Какое из двух исключений “выпадет” из блока try-finally? Что случится со вторым исключением?

Из блока try finally выпадет второе исключение, которое случилось в блоке finally, первое будет утеряно 47. Всегда ли исполняется блок finally?

1.Существуют потоки- Демоны- потоки предоставляющие некие сервисы, работая в фоновом режиме во время выполнения программы,но при этом не являются ее неотъемлеммой частью.Таким образом когда все потоки не демоны завершаются, программа завершает свою работу. В потоках демонах блок finally не выполняеться, они прерываются внезапно.

2.System.exit(0)

3.если в блоке finally произошло исключение и нет обработчика, то оставшийся код в блоке finally может не выполнятся

48. Могли бы вы придумать ситуацию, когда блок finally не будет выполнен?

Да

// Daemon threads don’t run the finally clause

import java.util.concurrent.*;

import static net.mindview.util.Print.*;

class ADaemon implements Runnable {

  public void run() {

    try {

      print("Starting ADaemon");

      TimeUnit.SECONDS.sleep(1);

    } catch(InterruptedException e) {

      print("Exiting via InterruptedException");

    } finally {

      print("This should always run?");

    }

  }

}

public class DaemonsDontRunFinally {

  public static void main(String[] args) throws Exception {

    Thread t = new Thread(new ADaemon());

    t.setDaemon(true);

    t.start();

  }

} /* Output:

Starting ADaemon

*///:~ 49. Предположим, есть метод, который может выбросить IOException и FileNotFoundException в какой последовательности должныидти блоки catch? Сколько блоков catch будет выполнено?

Если срабатывает один из блоков catch, то остальные блоки в данной конструкции try-catchвыполняться не будут.Блоки должны идти от наследника к родителюто есть:

Try{}

Catch(FileNotFoundException e){}

Catch(IOException e){}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]