Примитивные типы в Java. Примитивные типы. Что такое исключение. Чем отличаются исключения от обычных классов
Скачать 116.61 Kb.
|
Вопрос Что такое исключение. Чем отличаются исключения от обычных классов? Иерархия исключений. Что происходит если не обработать исключение? Error Exception RuntimeException В чем разница между checked и unchecked исключениями. В чём разница сточки зрения синтаксиса и идеологическая при использовании? Где возможно вызывать исключения? Какие данные есть в исключении? Какое назначение класса Методы класса От каких классов Throwable и его подклассов нельзя наследоваться? Что такое ошибка, а что такое исключительная ситуация (ответ ошибка - это класс Error - ментор не принимает) Что такое стектрейс. Какую информацию из него можно получить? Какую информацию можно получить из Как создать исключение. Как бросить исключение. Как поймать исключение. Как создать, бросить, поймать свое исключение? Зачем создавать свой класс и наследовать его от Как создать не проверяемые/проверяемые исключения Что такое подавленные исключения? Как достать подавленное исключение? Что нужно делать программисту, если в коде происходит деление на ноль обработать вне принимается) Какой интерфейс имплементирует объект в try с ресурсами (их два, оказывается и отличия нужно посмотреть)? Разница try catch и Конструкция Когда будет выполнен finally? (4 случая) Когда не будет выполнен Будет ли выполнен finally при Изучите все на первый взгляд необычные случаи с типа return в блоке try или если в блок finally если выбросить throw new Как правильно расставлять catch при правильном отлове ошибок в Можно ли обрабатывать разные исключения водном блоке catch? (А если одно из них наследник другого?) Что если исключение вылетело сначала в try а потом в Можно ли так написать try { throw new Object(); } Конструкция Что такое ресурс в конструкции try-with-resources? Try с ресурсами что если исключение вылетело сначала в try, а потом в close в конструкции try-with-recources? Какое исключение вылетит Что будет с другим? Когда происходит закрытие ресурса в конструкции try-with-resources если в try возникло исключение до перехода вили после того как catch отработает? Что такое логгирование и для чего используется. Какие есть уровни логирования и для чего они нужны? Сообщения каких уровней мы увидим, задав уровень Обязательно ли передавать в метод getLogger() имя класса Почему так принято? Как Java понимает какой уровень главнее при установке .setLevel(). (зайдите в класс Level и посмотрите как там устроены WARNING, SEVERE и т.д.) Ответ Событие которое случается в процессе работы программы и прерывает стандартный ходе исполнения. Программа переходит в режим поиска обработчика нештатной ситуации. Вроде ничем -> Error, T -> Exception, T -> Exception -> Если обработчика нетто программа завершится со стектрейсом. Ошибки виртуальной машины, не хватило памяти, не нашла класс, класс найден, но байт код некорректный говорит что ей плохо. Обрабатывать не надо. Ошибка уровня программы. Проверяемые. Компилятор следит чтобы такие исключения декларировались и обрабатывались. То есть нельзя бросить такое исключение без throws в сигнатуре метода. Если мы переопределяем метод интерфейса то мы не можем бросать больше исключений, чем в нём задекларировано. Ошибка уровня программы. Непроверяемые. Можно не декларировать, можно бросать где угодно. С точки зрения синтаксиса только то, что мы должны указать в сигнатуре метода проверяемые исключения. Ас точки зрения идеологии в том, что проверяемые исключения это дополнительная проверка программиста компилятором. В любом месте метода при помощи Могут быть любые данные, если это унаследованный класс. А по стандарту cause, message, stacktrace и Все классы исключения наследуются от Throwable, который наследуется от Object. getMessage - возвращает текстовую строку с описанием проблемы. printStackTrace. getStacktrace - массив с имененем класса, имя метода, имя файла и номер строки. getCouse возвращает ошибку, которая предшествовала текущей. getSuppresed - возвращает заглушенные исключения. Не следует делать свои классы исключения Ошибки мы не обрабатываем, так как это ошибки виртуальнйо машины. А вот исключительные ситуации мы можем обработать. Простыми словами это путь от начала программы до исключения. Массив элементов stackTrace. Имя класса, Название метода, Имя файла, Номер строки Также как любой объект, через new класс любого исключения. Перед объектом класса исключения написать место где может случиться исключение catch (название_исключения переменная) {обработка} Как обычный класс, который наследует Exception или RuntimeException. Выбор зависит только от идеологии программиста. Чтобы разделить нужные нам ошибки, например нерпавильно переданные параметры от других ошибок программы. Наследоваться от разных классов, E для проверяемых, RE для непроверяемых. Это исключение которое возникло при закрытии ресурсов, и если одновременно было поймано исключение в При помощи метода get Нужно проверять ом. Но если очень хочется, поймать исключение, обернуть в собственное исключение и передать дальше. То есть даём контроль классу, который использует наш метод и Closeable, который сделали наследником AC для обратнйо совместимости. Мы однозначно не можем использовать try-catch вместо if. Мы чётко разделяем поиск ошибки и логику. В случае ошибки мы можем получить дополнительные данные, например имя класса или стектрейс. finally исполняется последним, независимо оттого было исключение или нет выполняется всегда кроме System.exit(), сбой JVM, бесконечный цикл вили, отключение машины и что-то с потоками связанное не помешает finally получить управление. Если в try throw new, то finally перебьёт его другим throw По порядку наследования, сначала наследники, потом родители. Можно, ноне являются подклассами друг друга. Это полезно, если исключения надо обработать одинаково. Исключение в try будет потеряно, а дальше полетит исключение из Нет, так как Object не наследник Позволяет перед блоком try объявить ресурс с которым мы будем работать в try один или несколько через точку запятую, и гарантирует что ресурс будет закрыт. И его исключение при закрытии не перебьёт исключение как finally. Естественно ресурс должен реализовывать интерфейс Файл, соединение, всё что требувется открывать и закрывать. ресурс будет закрыт. И его исключение при закрытии не перебьёт исключение как finally. Оно будет добавлено в сапресд. До перехода в catch. Иначе как мы в catch обратимся к supressed. Логгирование даёт возможность нам восстановить события до появления ошибки. Мы можем сохранить все исключения со стектрейсом в файл и потом его проанализировать. Или можно собирать сттатистику. Уровень - это степень серьёзности. SEVERE, WARNING, INFO, CONFIG, FINE, FINER, Если setLevel(Level.INFO) то мы получим SEVERE, WARNING и Каждый уровень это определенная величиная 1000 и меньше с шагом 100. Стек трейс печатается оттого места, где экземпляр ошибки был создана не брошен. Метод мейн может декларировать и бросать любые декларируемые исключения |