Step 4 (S-47514)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/12772/step/4

Step 4 (S-47514) 1.png

[00:00 - 00:17] исключением это объект экземпляр какого то класс все классы исключений наследуется который в свою очередь наследуется ключевое свойство экземпляров с ролл и его подклассов возможность быть брошенными


[00:17 - 00:35] бросания выглядит следующим образом ключевое слово с ролл и за ним любое выражение типа обычно здесь просто создается экземпляр новой исключением важный момент который мы видим в консоли при печати такого исключения


[00:35 - 00:54] определяется тем где был создан для развлечения а не тем откуда она была выброшена у класс исключения традиционно есть конструктор принимающий строку сообщение это сообщение поясняющее проблему будет напечатано вместе со stack trace


[00:54 - 01:10] в классе был объявлен различные методы перечислю некоторые из них дед message возвращает текстовую строку с описанием проблем это та самая строка которую можно было передать в конструктор


[01:10 - 01:25] задача упростить диагностику проблемы объяснить пользователю что именно произошло хорошая идея не просто написать все сломалось отключить подробности например текущее состояние объекта и параметры метода где все произошло


[01:25 - 01:42] в случае с калькулятором которому пришла некорректное строка с выражением можно добавить сюда часть выражения с которой возникли проблемы при разборе принц текст печатается стандартный поток ошибок но если вы пишете обработчик исключений


[01:42 - 01:57] которые только и делают что печатает стектрейса завершает программу то такое обработчик можно вообще не писать так как именно это 4 я сделаю это сама если исключения не найдя обработчика вылетит из метода мы


[01:57 - 02:12] get stack trace возвращаются так trace тоже что печатается в консоле виде массива дело объектов stack trace элемент каждый из которых содержит и на класса и нету да имя файла номер строки


[02:12 - 02:32] то есть можно получить и проанализировать хотя потребность такая возникает редко дальше есть метод он возвращает другое исключение и лившуюся причиной данного или null если данное исключение является первичным не вызвана каким то другим


[02:32 - 02:51] если дойдет дело до печати сообщение в консоль то будет распечатана вся цепочка с ключем как и message может быть задана при создании экземпляра исключения там есть соответствующие перегруженный конструктор и еще есть get suppressed


[02:51 - 03:06] этот метод возвращает 1 или более исключений которые мы заглушили в процессе обработки основного исключением поясню на примере представим что мы читаем из файла вдруг случилась ошибка ввода вывода вылетело исключение


[03:06 - 03:22] мы начали ее обрабатывать попытались закрыть файл но тут бац случилось еще 1 исключение потому что файл совсем плохо и даже закрыть его не получается и тому у нас на руках 2 исключения что с ними делать как их обрабатывать


[03:22 - 03:38] существует такое соображения что 1 исключения обычно более важно именно оно описывает первопричину проблемы все остальное что случилось потом с высокой степенью вероятности это последствия наведенного


[03:38 - 03:55] поэтому я не исключение точно терять не следует с другой стороны последующие исключением могли быть совсем про другое и не связано с 1 поэтому совсем игнорировать их тоже не следует именно для этого существует в массив suppressed исключений


[03:55 - 04:10] 1 исключение выбирается в качестве главного остальные под него подмешивается и все это в таком виде бросается далее это попадает к вызывающему коду и он пусть разбирается что с этим делать


[04:10 - 04:16] но если дело дойдет до печати ошибки в консоль то surprised исключения тоже будут распечатаны