Преимущества исключений в языке программирования Java
Исключением является событием, которое происходит во время исполнения программы, что нарушает нормальный поток программы инструкциями. Преимущество 1: Разделение Ошибка - Обработка кодекса "Регулярная" КодексИсключения предусматривать средства для отдельных деталей, что делать, когда что-то из простых происходит от основной логики программы. В традиционных программ, ошибка обнаружения, отчетность и обработка часто приводит к путанице спагетти кода. Рассмотрим, например, метод pseudocode, что читает весь файл в память: readFile ( На первый взгляд, эта функция кажется достаточно простой, но он игнорирует все следующие возможные ошибки: • Что произойдет, если файл не может быть открыт? • Что произойдет, если длина файла не может быть определена? • Что произойдет, если достаточно памяти не могут быть выделены? • Что происходит, если, не читать? • Что произойдет, если файл не может быть закрытой? Для рассмотрения таких дел, в readFile функции должны быть больше, делать ошибки обнаружения, отчетности и обработки. Вот пример того, что функция может выглядеть так: errorCodeType readFile ( открыть файл; Там так много ошибок выявлению, и возвращение, что подлинные семь строк кода теряются в беспорядок. Что еще хуже, логический поток код также было потеряно, тем самым затрудняя ли код делает правильно: Является ли файл действительно закрыт, если функция не сможет выделить достаточно памяти? Это еще более сложно обеспечить, чтобы код продолжает делать правильно при изменении метода трех месяцев после его написания. Многие программисты решить эту проблему, просто игнорируя iterrors сообщениям, когда их программ катастрофы. Исключения позволяют писать основной поток кода и заниматься в других исключительных случаях. Если readFile функция используется вместо исключения традиционных ошибок методы управления, он больше похожи на следующие: readFile ( Заметим, что исключений не пожалеет усилий вам сделать работу выявления, регистрации и обработки ошибок, но они помогут вам организовать работу более эффективно. Преимущество 2: Ошибки распространения вверх по Call StackВторое преимущество исключений является возможность распространять сообщения об ошибках составляют слово стека методов. Предположим, что readFile метод четвертый метод в серии вложенных метод звонки на основной программе: method1 призывает method2, которая призывает method3, которые в конечном счете призывает readFile: method1 ( method2 ( method3 ( Предположим также, что method1 является единственным методом, заинтересованных в ошибки, которые могут произойти в readFile. ошибка традиционных методов уведомления силу method2 и method3 пропаганде кодов ошибок возвращается readFile составляют слово стека до кодов ошибок, наконец, достичь method1the единственный метод, который в них заинтересован: method1 ( errorCodeType method2 ( errorCodeType method3 ( Вспомним, что Java выполнения условий поиска назад через слово стека найти методы, которые заинтересованы в решении конкретного исключения. Метод может утка каких-либо исключений брошены в ней, что позволяет метод дальше составляют слово стека ловить его. Таким образом, лишь методы, которые заботятся об ошибках, придется беспокоиться о выявлении ошибок: method1 ( method2 бросает исключение ( method3 бросает исключение ( Однако, как показывает pseudocode, ducking исключение требует некоторых усилий со стороны этого посредника методов. Любые проверки исключений, которые могут быть брошены в рамках метода должно быть указано в его tHRows положение. Преимущество 3: Дифференциация категории и типы ошибокПоскольку все исключения брошены в программе объектов, группировки или классификации исключений является естественным результатом класс иерархии. Примером группы связанных исключением классов в Java платформы, определены в java.ioIOException и его потомков. IOException носит самый общий и представляет собой любой тип ошибки, которые могут возникнуть при выполнении I / О. Его потомки представляют более конкретные ошибки. Например, FileNotFoundException означает, что файл не может быть расположена на диске. А способ писать конкретные погрузчиков, которые могут обрабатывать особым исключением. В FileNotFoundException класс не имеет потомков, так что следующий обработчик может обрабатывать только один тип исключения: улова (FileNotFoundException е) ( А способ исключением вылова на основе своей группы или общего типа, с указанием любого из исключения в superclasses в улове заявление. Например, чтобы охватить все I / O исключения, независимо от их конкретного типа, исключение обработчик задает IOException аргумент: улова (IOException е) ( Этот обработчик сможет охватить все I / O исключения, в том числе FileNotFoundException, EOFException, и так далее. Вы можете найти подробную информацию о том, что в результате опроса аргумент передается в обработчик исключения. Например, используйте следующий печатать пачки след: улова (IOException е) ( Можно даже создать обработчик исключений, которые обрабатывает любые исключения с обработчик здесь: улов (Исключение е) (/ / A (слишком) общее исключение обработчику В Исключение класса приближается к верхней части THRowable класс иерархии. Поэтому этот обработчик будет улова многих других исключений в дополнение к тем, что обработчик предназначен для улова. Возможно, вы захотите обрабатывать исключения Таким образом, если все вы хотите, чтобы программу сделать, например, напечатать сообщение об ошибке для пользователя, а затем выйти. В большинстве случаев, однако, вы хотите исключением погрузчиков быть как можно конкретнее. Причина в том, что сперва один обработчик должен сделать, это определить тип исключения произошло, прежде чем он сможет принять решение о наилучшей стратегии восстановления. По сути, не отлов ошибки, то обработчик должен учитывать любую возможность. Исключение обработчика, которые слишком общий код может сделать множество ошибок путем отлова и обработки исключений, которые не были предусмотрены в программиста и для которых обработчик не преследует. Как уже отмечалось, можно создать группы исключений и обработки исключений, в целом, или вы можете использовать специальное исключение типа для различения исключений и обработки исключений в точной форме. это статья добавлена Клаин Бренд
|
|||||
|