15319

Обработка ошибок с помощью исключений

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа №5 Тема: Обработка ошибок с помощью исключений. Цель изучить основные способы программирования устойчивого кода. Обработка ошибок с помощью исключений Основная философия Java в том что плохо сформированный код не будет работать. Идеальн...

Русский

2013-06-11

30 KB

4 чел.

Лабораторная работа №5

Тема: Обработка ошибок с помощью исключений.

Цель - изучить основные способы программирования "устойчивого кода".

Обработка ошибок с помощью исключений

Основная философия Java в том, что “плохо сформированный код не будет работать”.

Идеальное время для поимки ошибки - это время компиляции, прежде чем вы попробуете даже запустить программу. Однако не все ошибки могут быть определены во время компиляции. Оставшиеся проблемы должны быть обработаны во время выполнения, с помощью некоторого правила, которая позволяет источнику ошибки передавать соответствующую информацию приемщику, который будет знать, как правильно обрабатывать затруднение.

В C и других ранних языках могло быть несколько таких правил, и они обычно устанавливались соглашениями, а не являлись частью языка программирования. Обычно вы возвращали специальное значение или устанавливали флаг, а приемщику предлагалось взглянуть на это значение или на флаг и определить, было ли что-нибудь неправильно. Однако, по прошествии лет, было обнаружено, что программисты, использующие библиотеки, имеют тенденцию думать о себе, как о непогрешимых, например: “Да, ошибки могут случаться с другими, но не в моем коде”. Так что, не удивительно, что они не проверяют состояние ошибки (а иногда состояние ошибки бывает слишком глупым, чтобы проверять). Если вы всякий раз проверяли состояние ошибки при вызове метода, ваш код мог превратиться нечитаемый ночной кошмар. Поскольку программисты все еще могли уговорить систему в этих языках, они были стойки к принятию правды: Этот подход обработки ошибок имел большие ограничения при создании больших, устойчивых, легких в уходе программ.

Решением является упор на причинную натуру обработки ошибок и усиление правил. Это действительно имеет долгую историю, так как реализация обработки исключений возвращает нас к операционным системам 1960-х и даже к бейсиковому “on error goto” (переход по ошибке). Но исключения C++ основывались на Ada, а Java напрямую базируется на C++ (хотя он больше похож на Object Pascal).

Слово “исключение” используется в смысле “Я беру исключение из этого”. В том месте, где возникает проблема, вы можете не знать, что делать с ней, но вы знаете, что вы не можете просто весело продолжать; вы должны остановиться и кто-то, где-то должен определить, что делать. Но у вас нет достаточно информации в текущем контексте для устранения проблемы. Так что вы передаете проблему в более высокий контекст, где кто-то будет достаточно квалифицированным, чтобы принять правильное решение (как в цепочке команд).

Другая, более значимая выгода исключений в том, что они очищают код обработки ошибок. Вместо проверки всех возможных ошибок и выполнения этого в различных местах вашей программы, вам более нет необходимости проверять место вызова метода (так как исключение гарантирует, что кто-то поймает его). И вам необходимо обработать проблему только в одном месте, называемом обработчик исключения. Это сохранит ваш код и разделит код, описывающий то, что вы хотите сделать, от кода, который выполняется, если что-то случается не так. В общем, чтение, запись и отладка кода становится яснее при использовании исключений, чем при использовании старого способа обработки ошибок.

Прочитайте этот текст для освоения программирования исключений.

Задание лабораторной работы.

1. Напишите класс ввода целых и действительных данных с консоли, предусмотрев "обработку ошибок - не цифры....".

2. Перепишите программу из лабораторной работы № 3. Включите в программу возможность ввода исходных данных с консоли и "защитите" вычисление, указав соответствующие "исключения" (возможно новые).

3. Перепишите разработанные вами классы из лабораторной работы № 4 включив в них "защиту кода" и соответственно приведите пример работы с вашими классами.

 

Рекомендованная литература для дополнительного чтения - см. этот архив.


 

А также другие работы, которые могут Вас заинтересовать

21625. Расширенные возможности оформления текста документов Word 715.5 KB
  Для оформления документа используют панели инструментов Форматирование Таблицы и границы и команды меню Формат рис. контур отображение внутренней и внешней границы каждого знака. Использование смещения символов Установка границ Обрамление абзацев и текста Для выделения частей документа оформления заголовков и в некоторых других случаях применяются различные рамки границы. При обрамлении удобно воспользоваться панелью инструментов Таблицы и границы рис.
21626. Создание списка в Word 538 KB
  Оформление нумерованных списков При оформлении нумерованных списков следует иметь в виду что элементом списка может быть только абзац. Для создания простейшего нумерованного списка надо выделить нумеруемые абзацы и нажать кнопку Нумерованный список по умолчанию панели инструментов Форматирование рис. Создание простейшего нумерованного списка Для оформления нумерованного списка выполните команду Формат Список или команду Список контекстного меню.
21627. Создание и оформление таблиц в Word 1.13 MB
  Представлены способы создания таблиц добавления и удаления столбцов и строк таблицы. Общие сведения о таблицах Таблицы в документах Microsoft Word используют большей частью для упорядочивания и представления данных. В таблицах можно производить вычисления таблицы можно использовать для создания бланков документов. Для работы с таблицами используют команды меню Таблица элементы панелей инструментов Стандартная Форматирование Таблицы и границы и Базы данных рис.
21628. Создание теста документа в MS Word 586 KB
  Представлены приемы использования табуляции при создании текста документа. Использование табуляции О табуляции Табуляция используется для выравнивания текста в пределах строки. Позиции табуляции позволяют перемещать курсор по строке клавишей клавиатуры Tab на определенные расстояния от левого поля. В Microsoft Word всегда есть позиции табуляции установленные по умолчанию.
21629. Двигательные нарушения при ДЦП 51 KB
  Существует условное деление мышц на тонические обеспечивающие поддержание поз и фазические осуществляющие динамические движения. Разные функции мышц обеспечиваются составом входящих в мышцу разных двигательных единиц ДЕ. Преобладание быстрых ДЕ обеспечивает динамические движения например двуглавая и трехглавая мышцы плеча при баллистических движениях.
21630. Понятие о ДЦП: эпидемиология, классификация, этиология 44 KB
  Семеновой 1999 ДЦП на территории России в 1962 году составлял 04 случая на 1000 детского населения а в 1992 9 случаев на 1000 детского населения. В Украине как и во всем мире также растет численность детей страдающих ДЦП. ДЦП описан еще в трудах Гиппократа и К.
21631. Адаптивное физическое воспитание детей с ДЦП 153.5 KB
  Второй период реализуется в дошкольных учреждениях компенсирующего и комбинированного вида имеющих специализированные группы детей с ДЦП. Понятие о ДЦП: эпидемиология классификация этиология ДЦП органическое поражение мозга возникающее в период внутриутробного развития в родах и в период новорожденности и сопровождающееся двигательными речевыми и психическими нарушениями.Семеновой 1999 ДЦП на территории России в 1962 году составлял 04 случая на 1000 детского населения а в 1992 9 случаев на 1000 детского населения.
21633. Двигательная реабилитация детей с ДЦП 47.5 KB
  ЛФК проводят в дошкольном возрасте от 3 до 7 лет в детских садах в форме малогрупповых занятий от 3 до 5 раз в неделю по 1530 минут. Специалисту по ЛФК необходимо знать методы и принципы последовательности формирования двигательных навыков ребенка с ДЦП. В занятиях ЛФК используют как статические так и динамические дыхательные упражнения в разных исходных положениях с разным темпом ритмом с акцентом на вдох или выдох с использованием различных предметов надувание шариков пускание мыльных пузырей игра на духовых инструментах и пр.