159
несколько отличается от механизма возвращ
исключений оформляется иначе (см. следую отка обычных
результатов работы операции.
• Исключения в обоих языках относятся к ос
объекты таких классов могут быть выброш
исключений являются все наследники класс
System.Exception в C#.
• Объекты-исключения содержат, как миним
o Сообщение о возникшей ситуации (его ерации,
выбрасывающей это исключение).
В Java это сообщение можно получить с
— с помощью свойства
string Message
o Иногда возникают цепочки «наведенны
вызывает выброс другого. Каждый объе
исключение, непосредственно вызвавше е вызвано
никаким другим, эта ссылка равна
null.
В Java эту ссылку можно получить с пом —
с помощью свойства
System.Exception
o Для описания ситуации, в которой возни е стека
исполнения программы — список метод ывали друг друга перед этим, и
указание на место в коде каждого такого ает место вызова
следующего метода по стеку или, если э и
возникло исключение
. Обычно указывае тупен,
если соответствующий метод присутств
или является внешним для Java машины
Информация о состоянии стека на моме ния, как и его
сообщение, автоматически выводится в
исключение остается необработанным в
В
Java состояние стека для данного искл тода
StackTraceElement[] getStackTrace( го массив элементов стека.
Каждый такой элемент несет информац
(
String getClassName()) и методе (Str
(
int getLineNumber()).
В C# можно сразу получить полное описание состояния стека в виде одной строки с
помощью свойства string StackTrace.
• Блок обработки исключительных ситуаций
try { statements }
catch ( type_1 e_1 ) { statements_1 }
…
Ag
catch ( type_n e_n ) { statements_n }
finally { statements_f }
Если во время выполнения одной из инстру
исключение, управление передается на перв
такого же или более широкого типа. Если п ков
catch нет, выполняется блок
finally и исключение выбрасывается даль
Блок finally выполняется всегда — сразу о,
или сразу после обрабатывавшего исключен и он выбросил новое
исключение.
В этой конструкции могут отсутствовать бл ое
одновременно. В C# разрешается опускать
используется при обработке соответствующ
ения обычного результата, и обработка
щий вид инструкций), чем обраб
обым типам — классам исключений. Только
ены в качестве исключений. Классами
ов
java.lang.Throwable в Java и
ум, следующую информацию.
должен определить автор кода оп
помощью метода
String getMessage(), а в C#
.
х» исключений, если обработка одного
кт-исключение содержит ссылку на другое
е это. Если данное исключение н
ощью метода
Throwable getCause(), а в C#
.InnerException.
кло исключение, используется состояни
ов, которые выз
метода. Это место обознач
то самый последний метод, то место, где
тся номер строки, но иногда он недос
в сист
ует еме только в скомпилированном виде
.
нт возникновения исключе
поток сообщений об ошибках, если это
программе.
ючения можно получить с помощью ме
, возвращающе
)
ию о файле (
String getFileName()), классе
ing getMathodName()), а также о номере строки
выглядит так.
Ag
Ag
Ag
Ag
кций в блоке, следующем за try, возникает
ый блок catch, обрабатывающий исключения
одходящих бло
ше.
после блока try, если исключения не возникл
ие блока catch, даже есл
оки catch или блок finally, но не то и друг
имя объекта-исключения в
catch, если он не
ей исключительной ситуации.