Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


ќбработка исключительных ситуаций




ѕри работе программы выполнение операторов обычно идЄт в рамках Уосновного стволаФ - в случае, когда всЄ идЄт как надо. Ќо врем€ от времени возникают исключительные ситуации (исключени€ - exceptions), привод€щие к ответвлению от основного ствола: деление на 0, отсутствие места на диске или попытка писать на защищенную дл€ записи дискету, ввод с клавиатуры ошибочного символа (например, буквы вместо цифры). ¬ отличие от катастрофических ситуаций (ошибок) такие ситуации в большинстве случаев могут быть учтены в программе, и, в частности, они не должны приводить к аварийному завершению программы.

¬ €зыках программировани€ предыдущих поколений дл€ решени€ указанных проблем приходилось использовать огромное число проверок на допустимость присваиваний и математических операций. ћало того, что эти проверки резко замедл€ли работу программы - не было гарантии, что они достаточны, и что во врем€ работы программы не возникнет "вылет" из-за возникновени€ непредусмотренной ситуации.

¬ Java, как и в других современных €зыках программировани€, дл€ таких целей предусмотрено специальное средство Ч обработка исключительных ситуаций. ѕри этом используетс€ так называемый защищенный блок программного кода try (Упопытатьс€Ф), после которого следует необ€зательные блоки перехвата исключений catch, за которыми идЄт необ€зательный блок очистки ресурсов finally.

ѕро наступившую исключительную ситуацию говор€т, что она возникает, либо Ц что она возбуждаетс€. ¬ английском €зыке дл€ этого используетс€ слово throw Ц УброситьФ. ѕоэтому иногда в переводной литературе используют дословный перевод Убросаетс€ исключительна€ ситуаци€Ф.

ќбщий случай использовани€ защищЄнного блока программного кода и перехвата исключительных ситуаций выгл€дит так:

 

try{

операторы0;

}

catch (“ип»сключени€1 переменна€1){

операторы1;

}

catch (“ип»сключени€2 переменна€2){

операторы2;

}

catch (“ип»сключени€N переменна€N){

операторыN;

}

finally{

операторы;

}

ќтметим, что при задании блоков try-catch-finally после фигурных скобок точкой с зап€той У;Ф можно не ставить, как и всегда в случае использовани€ фигурных скобок. Ќо можно и ставить - по усмотрению программиста.

≈сли исключительных ситуаций не было, операторы0 в блоке try выполн€ютс€ в обычном пор€дке, после чего выполн€ютс€ операторы в блоке finally. ≈сли же возникла исключительна€ ситуаци€ в блоке try, выполнение блока прерываетс€, и идЄт перехват исключений в блоках catch (УперехватитьФ). ¬ качестве параметра оператора catch задаЄтс€ ссылочна€ переменна€, имеюща€ тип той исключительной ситуации, которую должен перехватить данный блок. „аще всего эту переменную называют e (по первой букве от exception). ≈сли тип исключени€ совместим с типом, указанном в качестве параметра, выполн€етс€ соответствующий оператор. ѕосле чего проверок в следующих блоках catch не делаетс€.

ѕосле проверок и, возможно, перехвата исключени€ в блоках catch выполн€ютс€ операторы блока finally. ≈го обычно используют дл€ высвобождени€ ресурсов, и поэтому часто называют блоком "очистки ресурсов". —пециальных операторов или зарезервированных конструкций дл€ обработки в блоке finally нет. ќтличие кода внутри блока finally от кода, сто€щего после оператора tryЕfinally, возникает только при наличии внутри блоков try или catch операторов break, continue, return или System.exit, то есть операторов, прерывающих работу блока программного кода. ¬ этом случае независимо от их срабатывани€ или несрабатывани€ сначала происходит выполнение операторов блока finally, и только потом происходит переход в другое место программы в соответствии с оператором прерывани€.

ѕример обработки исключений:

void myETest(String s,double y){

double x, z;

try{

x=Double.parseDouble(s);

z=Math.sqrt(x/y);

} catch(ArithmeticException e){

System.out.println("ƒеление на ноль");

} catch(NumberFormatException e){

System.out.println(" орень из отрицательного числа!");

}

};

 





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2017-02-28; ћы поможем в написании ваших работ!; просмотров: 442 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

—тудент всегда отча€нный романтик! ’оть может сдать на двойку романтизм. © Ёдуард ј. јсадов
==> читать все изречени€...

2152 - | 1924 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.025 с.