Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java.doc
Скачиваний:
0
Добавлен:
08.01.2020
Размер:
288.26 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

"Московский государственный технический университет радиотехники,

электроники и автоматики"

МГТУ МИРЭА

__________________________________Кибернетика________________________________

(наименование факультета)

____________________________ «Информационная безопасность»_____________________________

(наименование кафедры)

КУРСОВАЯ РАБОТА

по дисциплине

«_________________Языки программирования__________________»

(наименование дисциплины)

Тема курсовой работы «______Обработка исключения в языке Java____________

________________________________________________________________________________»

(наименование темы)

Студент группы ККС-2-11

(учебная группа)

Родионов Ф.Н.

(Фамилия И.О)

Москва 2012

Определение понятия ошибки и исключения. Классификация ошибок. Общий способ обработки ошибок. Обработка ошибок в языке Java. - исключение в Java. - причины возникновения исключений в Java - конструкция обработки исключения - асинхронные исключения - иерархия исключений - классы Exception и RuntimeException - класс Error Приложения.

Определение понятия ошибки и исключения.

В качестве введения рассмотрим определения понятия «ошибка». Начнем с наиболее общего трактования этого: В самом общем случае под ошибкой понимается какой-то сбой в программе на этапе ее выполнения. По определению стандарта ISO 9241-13 ошибка это – несоответствие между целями пользователя и ответом системы. Ошибкой также можно назвать недокументированные или нежелательные, "побочные" реакции программы на те или иные действия пользователя равно как и при использовании ее одновременно с другим программами или на другой аппаратной платформе. В книге «К. Браун, Р. Калбертсон, Г. Кобб. Быстрое тестирование» приводится такое определение программных ошибок: "Говоря простыми словами, программная ошибка - не что иное, как изъян в разработке программного продукта, который вызывает несоответствие ожидаемых результатов выполнения программного продукта и фактически полученных результатов. Дефект может возникнуть на стадии кодирования, на стадии формулирования требований или на стадии проектирования, либо же его причина может крыться в некорректной конфигурации или данных. Дефектом может быть также что-то другое, что не соответствует ожиданиям заказчика и что может быть, а может и не быть определено в спецификации программного продукта". Для исключения Г. Шилдт дает такое определение: исключение – это нештатная ситуация , возникающая во время выполнения последовательности кода. Как можно заметить, под понятием ошибки и исключительной ситуацией можно подразумевать одно и то же. Исключение — это некое специальное событие, которое сигнализирует об ошибке в программе. Другими словами, исключение – это ошибка времени выполнения. Классификация ошибок.

Ошибки при написании, отладке и работе программ можно разделить на этапы их времени возникновения, такие как: ошибки компиляции, выполнения, компоновки и логические ошибки. Ошибки компиляции обнаруживаются при непосредственной трансляции исходного кода в объектный модуль или в машинный код. Невозможно перейти к стадии времени выполнения программы, пока не будут ликвидированны все ошибки стадии компиляции. Ошибки выполнения относятся к самой непредсказуемой группе . Прежде всего они могут иметь разную природу, и соответственно по-разному проявляться. Часть ошибок обнаруживается и обрабатываются операционной системой.  Ошибки компоновки, как следует из названия, связаны с проблемами, обнаруженными при разрешении внешних ссылок. В разных языках может осуществляться на различных этапах. Логические ошибки имеют разную природу. Так они могут следовать из ошибок, допущенных при проектировании, например, при выборе методов, разработке алгоритмов или определении структуры классов, а могут быть непосредственно внесены при кодировании модуля. Ошибки компиляции: 1. Синтаксические ошибки. 2. Семантические ошибки. 1. Описания  идентификаторов. 1. Неинициализированный указатель. 2. Неинициализированная переменная. 3. Ошибочная инициализация. 2. Статический контроль типов. 1. Не корректное присваивание. 2. Не корректная операция. 3. Не корректная передача параметров.

Ошибки выполнения: 1. Синхронные ошибки. 1. Ошибки определения данных. 1. Ошибки передачи. 2. Ошибки преобразования. 3. Ошибки перезаписи. 4. Ошибочные данные. 5. Динамический контроль типов. 6. Ошибки индексации. 2. Ошибки накопления погрешностей. 1. Игнорирование способов уменьшения погрешностей. 2. Переполнение разрядной сетки. 3. Арифметические ошибки. 4. Ссылочные ошибки. 5. Ошибки сети. 6. Ошибки ввода/вывода. 2. Асинхронные ошибки. 1. Ошибки виртуальной машины. 2. Ошибки системы.

Ошибки компоновки 1. Ошибки получения данных по внешним ссылкам. 2. Объединение модулей 1. Ошибки обнаружения модулей. 2. Ошибка состыковки списков параметров модулей.

Логические ошибки 1. Ошибки проектирования 1. Неприменимый метод. 2. Неверный алгоритм. 3. Неверная структура данных. 2. Ошибки кодирования 1. Некорректное вычисление. 2. Ошибки реализации алгоритмов. Общий способ обработки ошибок.

1. При компиляции, компилятор производит анализ исходной программы, а затем синтез объектной программы. Первоначально производится лексический анализ программы. Лексический анализатор просматривает строки слева направо и строит символы программы - целые числа, идентификаторы, служебные слова и т. д. Символы передаются затем на обработку cинтаксическому и семантическому анализатору, где производит проверку символов программы на синтаксические и семантические правила языка переводя программу во внутреннее представление. При обнаружении нарушения данных правил или обнаружению неизвестных команд, компилятор останавливает свою работу, выведя место обнаружения ошибки и ее тип.

2. В отсутствие собственного механизма обработки исключений в языках программирования, для программ, наиболее общей реакцией на любую исключительную ситуацию является немедленное прекращение выполнения с выдачей пользователю сообщения о характере исключения. Тогда можно утверждать, что тогда обработка исключений передается стандартному обработчику исключений системы в которой происходит выполнение. Пример такого нарушения - попытка индексировать вне границ массива. Некоторые языки программирования и их реализации противодействуют таким ошибкам безоговорочным завершением программы; другие позволяют реагировать произвольным или непредсказуемым образом.   Такие подходы не совместимы с задачами языка Java: обеспечивать мобильность и устойчивость к ошибкам. Языки имеющие механизм обработки исключений имеют в наличии специальные конструкции для обработки ошибок. За исключением незначительных различий в синтаксисе, существует лишь пара вариантов обработки исключений. В наиболее распространённом из них исключительная ситуация генерируется специальным оператором (throw или raise), а само исключение, с точки зрения программы, представляет собой некоторый объект данных. То есть, генерация исключения состоит из двух этапов: создания объекта-исключения и возбуждения исключительной ситуации с этим объектом в качестве параметра. При этом конструирование такого объекта само по себе выброса исключения не вызывает. В одних языках объектом-исключением может быть объект любого типа данных (в том числе строкой, числом, указателем и так далее), в других — только предопределённого типа-исключения (чаще всего он имеет имя Exception) и, возможно, его производных типов (типов-потомков, если язык поддерживает объектные возможности).

Область действия обработчиков начинается специальным ключевым словом try или просто языковым маркером начала блока (например, begin) и заканчивается перед описанием обработчиков (catch, except, resque). Обработчиков может быть несколько, один за одним, и каждый может указывать тип исключения, который он обрабатывает. Если язык поддерживает наследование и типы-исключения могут наследоваться друг от друга, то обработкой исключения занимается первый обработчик, совместимый с исключением по типу.

Некоторые языки также допускают специальный блок (else), который выполняется, если ни одного исключения не было сгенерировано в соответствующей области действия. Чаще встречается возможность гарантированного завершения блока кода (finally, ensure).

3. Логические ошибки сложны в обнаружении и устранении, для данных целей, необходимо использовать отладчик, просматривать на ошибки блок-схему. При этом сложноть отладки увеличивается под влиянием следующих факторов: 1. опосредованного проявления ошибок; 2. возможности взаимовлияния ошибок; 3. возможности получения внешне одинаковых проявлений разных ошибок; 4. отсутствия повторяемости проявлений некоторых ошибок от запуска к запуску; 5. написания отдельных частей программы разными программистами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]