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 включив в них "защиту кода" и соответственно приведите пример работы с вашими классами.

 

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


 

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

1005. Влияние телевидения и компьютеров на психическое и физическое здоровье детей. 397 KB
  Hасширение представлений педагогов о влиянии компьютеров и телевидения на здоровье детей путем обмена опытом и принятии роли защитника или противника СМИ.
1006. Доходная и расходная часть региональных бюджетов Российской Федерации 408 KB
  Теоретические основы функционирования региональных бюджетов. Роль региональных бюджетов в бюджетной системе РФ. Характеристика современного состояния региональных бюджетов. Пути укрепления доходной базы региональных бюджетов и пути совершенствования использования бюджетных средств.
1007. Расчет электромагнитного поля и волн 286 KB
  Взаимодействие электромагнитного поля с электронами. Вероятность перехода в поле электромагнитной волны. Собственные значения и собственные функции гамильтониана Рашбы. Правила отбора для внутризонных переходов в квантовых ямах. Правила отбора для межзонных переходов. Спиновый эффект Холла (с гамильтонианом Рашбы).
1008. Избранные лекции по теории и практике религиозного мистицизма 1.47 MB
  Обзор буддийских практик. Внутренняя мистика - буддовость. Всецелая чистота окружающей обстановки. Основы Дзен. Введение в христианский мистицизм. Особенности Древнецерковной мистики. Основы православного Исихазма. Буддизм в Китае и Японии. Краткий обзор. Католический мистицизм.
1009. Методичні вказівки щодо виконання економічної частини дипломного проекту для студентів денної форми навчання 346.5 KB
  Загальні вимоги щодо змісту та оформлення економічної частини дипломного проекту. Оцінка конкурентоспроможності програмного продукту (ІС, КМ) Розрахунок інтеґрального показника конкурентоспроможності базового і нового варіантів програмного продукту
1010. Технологические особенности переработки полимерных материалов методом экструзии 492.5 KB
  Методы переработки термопластичных полимеров. Общая характеристика полимеров, перерабатываемых методом экструзии. Течение расплава через сетки и формующую оснастку. Технологические свойства полимеров перерабатываемых методом экструзии. Влияние параметров переработки на свойства рукавных пленок. Виды брака при производстве рукавной пленки.
1011. Разработка микропроцессорного устройства управления шаговым биполярным двигателем 517 KB
  Разработка схемы электрической принципиальной. Выбор микросхемы и интерфейса связи. Выбор силового драйвера управления. Характеристика устройств используемых в разрабатываемой схеме. Разработка блока управления биполярным шаговым двигателем на микроконтроллере Atmega8535.
1012. Создание и обработка баз данных 490 KB
  Создание базы данных. Система управления базами данных ACCESS. Создание таблиц в режиме конструктора. Заполнение таблиц данными (кроме вычисляемого поля). Запросы на выборку. Параметрические запросы. Создание и редактирование отчетов.
1013. База данных Колледж 559 KB
  Создание базы данных Колледж, в которой учтена специфик колледжа. Концептуальными требованиями являются данные о колледже и об абитуриенте. Создание таблиц в режиме конструктора. Создание кнопочных форм.