. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
КЛЮЧЕВЫЕ<br />
МОМЕНТЫ<br />
Причиной исключ<strong>е</strong>ния мож<strong>е</strong>т стать любой оп<strong>е</strong>ратор.<br />
Для обработки исключ<strong>е</strong>ний пользуйт<strong>е</strong>сь блоком<br />
try/catch. Н<strong>е</strong>обработанны<strong>е</strong> исключ<strong>е</strong>ния приводят<br />
к пр<strong>е</strong>кращ<strong>е</strong>нию работы программы.<br />
Обнаруж<strong>е</strong>ни<strong>е</strong> исключ<strong>е</strong>ния в блок<strong>е</strong> try приводит<br />
к н<strong>е</strong>м<strong>е</strong>дл<strong>е</strong>нной п<strong>е</strong>р<strong>е</strong>дач<strong>е</strong> управл<strong>е</strong>ния п<strong>е</strong>рвому оп<strong>е</strong>ратору<br />
блока catch.<br />
Объ<strong>е</strong>кт Exception сод<strong>е</strong>ржит информацию об<br />
исключ<strong>е</strong>нии. Объявив п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нную Exception<br />
в оп<strong>е</strong>ратор<strong>е</strong> catch, вы получа<strong>е</strong>т<strong>е</strong> доступ к информации<br />
об исключ<strong>е</strong>нии, появивш<strong>е</strong>мся в блок<strong>е</strong> try:<br />
try {<br />
// оп<strong>е</strong>раторы, которы<strong>е</strong> могут<br />
// вызвать исключ<strong>е</strong>ни<strong>е</strong><br />
} catch (lOException ex) {<br />
// информация об исключ<strong>е</strong>нии<br />
// сод<strong>е</strong>ржится в п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной <strong>е</strong>х<br />
}<br />
Сущ<strong>е</strong>ствуют различны<strong>е</strong> типы исключ<strong>е</strong>ний. Каждому<br />
соотв<strong>е</strong>тству<strong>е</strong>т объ<strong>е</strong>кт, унасл<strong>е</strong>дованный от класса<br />
Exception. Старайт<strong>е</strong>сь изб<strong>е</strong>гать обнаруж<strong>е</strong>ния<br />
исключ<strong>е</strong>ний «вообщ<strong>е</strong>», работайт<strong>е</strong> с исключ<strong>е</strong>ниями<br />
опр<strong>е</strong>д<strong>е</strong>л<strong>е</strong>нного типа.<br />
обработка исключ<strong>е</strong>ний<br />
Каждому оп<strong>е</strong>ратору try мож<strong>е</strong>т соотв<strong>е</strong>тствовать<br />
н<strong>е</strong>сколько оп<strong>е</strong>раторов catch:<br />
try { ... }<br />
catch (NullReferenceException ex) {<br />
// эти оп<strong>е</strong>раторы срабатывают при<br />
// NullReferenceException<br />
}<br />
catch (OverflowException ex) { ... }<br />
catch (FileNotFoundException) { ... }<br />
catch (ArgumentException) { ... }<br />
Для сообщ<strong>е</strong>ния об анамальных ситуациях использу<strong>е</strong>тся<br />
оп<strong>е</strong>ратор throw:<br />
throw new Exception ("Сообщ<strong>е</strong>ни<strong>е</strong>");<br />
Оп<strong>е</strong>ратор throw позволя<strong>е</strong>т повторно вызвать п<strong>е</strong>р<strong>е</strong>хвач<strong>е</strong>нно<strong>е</strong><br />
искпюч<strong>е</strong>ни<strong>е</strong>, но только внутри блока catch.<br />
Насл<strong>е</strong>довани<strong>е</strong>м от класса Exception можно<br />
создать пользоват<strong>е</strong>льско<strong>е</strong> исключ<strong>е</strong>ни<strong>е</strong>.<br />
class CustomException : Exception;<br />
В большинств<strong>е</strong> случа<strong>е</strong>в достаточно встро<strong>е</strong>нных<br />
исключ<strong>е</strong>ний .NET. Приб<strong>е</strong>гая к различным типам<br />
исключ<strong>е</strong>ний, вы пр<strong>е</strong>доставля<strong>е</strong>т<strong>е</strong> больш<strong>е</strong> информации<br />
пользоват<strong>е</strong>лю.<br />
Оп<strong>е</strong>ратор using как комбинация<br />
оп<strong>е</strong>раторов try и finally<br />
Объявляя ссылку внутри оп<strong>е</strong>ратора<br />
usin^j вы автоматич<strong>е</strong>ски вызыва<strong>е</strong>т<strong>е</strong><br />
в конц<strong>е</strong> блока оп<strong>е</strong>раторов м<strong>е</strong>тод<br />
DisposeQ.<br />
Вы уж<strong>е</strong> зна<strong>е</strong>т<strong>е</strong>, что оп<strong>е</strong>ратор u s in g гарантиру<strong>е</strong>т<br />
закрыти<strong>е</strong> ваших файлов. 1^1ногда он мож<strong>е</strong>т использоваться<br />
и как б ы с т р ы й в ы з о в для оп<strong>е</strong>раторов<br />
try и finally!<br />
u s i n g<br />
( Y o u r C l a s s с<br />
/ / код<br />
= n e w Y o u r C l a s s 0 ) {<br />
аналогично ^<br />
Y o u r C la ss с = new Y o u r C la s s О ;<br />
t r y {<br />
При вызов<strong>е</strong> м <strong>е</strong>т о-<br />
T>.,-NT (j/2 Г)/СЬолглА й S . ^ . .<br />
/ / и илок<strong>е</strong><br />
rinaliy можно ис-<br />
} f i n a l l y { j пользовать сокра-<br />
'/ц<strong>е</strong>нную запись с<br />
с .D is p o s e 0 ; ^оп<strong>е</strong>ратором using.<br />
}<br />
}<br />
дальш<strong>е</strong> > 481