Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Обработка ошибок в языке Java.

Читайте также:
  1. Dynamics Range Processing - универсальная динамическая обработка
  2. II. ИСПРАВЛЕНИЕ ОШИБОК
  3. Автоматизированная обработка учета складских операций и реализации продукции
  4. Алфавитный указатель терминов на русском языке
  5. Алфавитный указатель терминов на русском языке
  6. Аналитическая обработка данных, системы оперативной аналитической обработки (ОLAP).
  7. АНАЛОГИЯ В ЯЗЫКЕ И В ЭТИМОЛОГИЧЕСКОМ ИССЛЕДОВАНИИ

В языке Java, JVM (Java Virtual Machine) обнаруживает ошибки компиляции при трансляции исходного кода в Байт код.


Ошибки времени выполнения:
Когда программа нарушает семантические ограничения языка Java, виртуальная машина Java дает сигнал об этой ошибке программе в виде исключения. Java указывает на то, что исключение будет генерироваться тогда, когда будут нарушены семантические ограничения и будет вызывать нелокальную передачу управления от места, где происходит исключение до места, которое может определяться программистом. Исключение генерируется в том месте, где оно произошло, и перехватывается в том месте, которому передается контроль.
Java-программы также могут явно генерировать исключения, используя операторы throw. Возвращением невозможных значений, таких как: значение целого типа -1, где отрицательное значение не ожидается вовсе, обеспечивается альтернатива для традиционного стиля обработки ошибочных условий. Такие неправильные значения слишком часто игнорируются или не проверяются вызывающей программой, приводя к программам, которые неправильны, проявляют нежелательное поведение, или все вместе.
В Java программе также можно указать какое исключение может произойти при вызове метода. Эта конструкция была введена специально, что бы заставить обработчиков обрабатывать исключения. Этот оператор – throws. Вызов метода, в котором указана данная конструкция, обязательно должен быть заключен в иело try- catch.
Само исключение в Java представляют собой объект, который описывает исключительную ситуацию, возникающую в части программного кода. Когда возникает такая ситуация, в вызвавшем ошибку методе создается и передается объект, который представляет собой исключение. В некоторой точке исключение перехватывается и обрабатывается.
Каждое исключение представляется экземпляром класса Throwable или одним из его подклассов; такой объект может использоваться для того, чтобы нести информацию с места, в котором исключение происходит к обработчику, который это исключение перехватывает. Обработчики устанавливаются предложениями catch операторов try. В процессе генерирования исключения, виртуальная машина языка Ява завершает преждевременно, один за другим, любые выражения, операторы, вызовы метода и конструктора, статические инициализаторы и поле инициализированных выражений, которые начали, но не закончили выполнение в текущем потоке. Этот процесс продолжается до тех пор, пока обработчик не найдет, что указывает на то, что это обрабатывается как частичное исключение присваиванием имен класса исключения или суперкласса класса исключения. Если такой обработчик не найден, тогда метод uncaughtException вызывается для ThreadGroup, который является породителем нитевого потока, таким образом весь объем работы производится для того, чтобы избежать ситуации необработанного исключения.

Исключение в Java генерируется по одной из трех причин:

1. Виртуальной машиной языка Java было сгенерировано исключение потому, что:

1. формула оценки выражения нарушает нормальную семантику языка Java.

2. ошибка происходит при загрузке или компоновке части Java-программы.

Эти исключения не генерируются в произвольном месте программы, а генерируются там, где они определяются как возможный результат формулы оценки выражения или выполнения оператора.

2. Оператор throw был выполнен в Java- коде.

3. Асинхронное исключение брошено потому, что:

1. был вызван метод stop класса Thread.

2. в виртуальной машине произошла внутренняя ошибка.


Когда генерируется исключение, управление передается от кода, который вызвал исключение для тесно связанного динамически-окруженного предложения catch оператора try,который обрабатывает исключение.
Общая структура блока обработки исключений (см. Приложение 1)

Пример использования конструкций исключения (см. Приложение 2.)

Обрабатывает ли данное предложение catch, данное исключение определяется сравнением класса объекта, который был сгенерирован, и объявленного типа параметра предложения catch. Предложение catch обрабатывает исключение, если тип его параметра - это класс исключения или суперкласс класса исключения. Иначе говоря, предложение catch будет захватывать любой объект исключения, который является экземпляром объявленного типа параметра.

Передача управления, которая происходит когда генерируется исключение, вызывает досрочное завершение выражений и операторов до тех пор пока не встретится предложение catch, которое может обрабатывать исключение; тогда выполнение продолжается исполнением блока этого предложения catch. Код, который вызвал исключение никогда не возобновляется.

Если предложение catch, обрабатывающее исключение, не может быть найдено, тогда текущий поток (поток, который столкнулся с исключением) заканчивается, но только после выполнения всех finally-предложений и для ThreadGroup вызывается метод uncaughtException, то есть для родителя текущего потока.

В ситуациях, где желательно чтобы один блок кода всегда выполнялся после другого, даже если тот другой блок кода заканчивается преждевременно, может использоваться оператор try с finally-предложением. Если try- catch блок в try-catch-finally,заканчивается преждевременно, блок finally все равно выполняется во время распространения исключения, даже если соответствующее catch-предложение в конечном счете не найдено. Если finally-предложение выполняется из-за преждевременного завершения try-блока и само finally-предложение заканчивается преждевременно, тогда причина для преждевременного завершения блока try отбрасывается и новая причина для преждевременного завершения передается от finally.


Дата добавления: 2015-12-08; просмотров: 79 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.006 сек.)