Добавил:
2200 7008 9480 6099 TKFF БЛАГОДАРНОСТЬ МОЖНО ТУТ ОСТАВИТЬ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИПЛОМ 2025 / 4 курса_МТУСИ / 1 КУРС / Информатика / С# для чайников - Мюллер.pdf
Скачиваний:
0
Добавлен:
04.06.2025
Размер:
53.3 Mб
Скачать

Если значение spacei ndex отрицательно, ключевого слова namespace в строке нет. aьты dдытннэ .ы ,ыЭту строку надо просто пропустить и вернуть ее неизменной, после чего перейти к следующей строке. В любом случае прочие методы вызывать не надо.

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

Где же с учетом всего сказанного следует поместить обработчик исключений? Вы можете захотеть поместить большую часть тела метода FixName ­ spaceLine ( ) в t rу-блок. Но насколько хорошее это решение? Это - низко­ уровневый метод, так что при необходимости он должен генерировать соб­ ственные исключения или передавать дальше исключения, сгенерированные в вызываемых им методах. Я бы рекомендовал просмотреть всю цепочку вы­

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

При перемещении по цепочке вызовов постоянно задавайте сами себе во­ просы из раздела "Вопросы, помогающие при планировании". Что произойдет, если FixNamespaceLine ( ) сгенерирует исключение? Это зависит от того, каким образом результат работы этого метода используется методами, находящимися выше в цепочке. Кроме того, какими неприятностями это чревато? Если вы не сможете "исправить" строки с пространствами имен, будет ли пользователем потеряно что-то важное? Можно ли оставить файл неисправленным (в этом случае можно перехватить исключение пониже в цепочке и сообщить поль­ зователю о необработанном файле)? Думаю, что основную идею вы поняли. Мораль, вытекающая из всего сказанного, проста: создание обработчика ис­ ключений требует анализа и раздумий.

Помните, что ебэт,ы вызов метода может привести к генерации ис­ ключений, например приложению ­?тздьы не хватить памяти или

может не оказаться какой-то необходимой для работы приложения ЗАПОМНИ! сборки или библиотеки. В этом случае вы практически ничего не

сможете сделать. . .

Как выяснить, какие исключения генерируются теми или иными методами

Как при вызове некоторого метода из библиотеки классов .NET, та­ кого как String . IndexOf ( ) - или даже одного из ваших собственных

методов, - узнать, может ли он генерировать исключения?

СОВЕТ

Мьздз, т, ­жс, сех Вl/ сжкВъоnк, сех Вl/косо,

C т,

»Visual Studio предоставляет помощь в виде всплывающих под­ сказок. Если вы наведете указатель мыши на имя метода в редак­

торе Visual Studio, желтая всплывающая подсказка перечислит не только параметры метода и его возвращаемый тип, но и исключе­ ния, которые он может генерировать.

)) · Есnи у вас есть ХМL-комментарии к вашим собственным ме­

тодам, Visual Studio будет выводить эту информацию в под­ сказках так же, как и для методов .NET. Если вы документируете исключения, которые может генерировать ваш метод, то увидите

их в подсказке. Поместите информацию об исключениях в раздел <exception> в комментарии <sumrnary> для ее вывода во всплыва­

ющей подсказке.

)) Еще боnьwе информации содержится в справочной системе.

Если вы найдете метод .NET в справочной системе, то увидите спи­ сок всех исключений, которые может генерировать данный метод, а также дополнительную информацию, которая во всплывающих под­ сказках не отображается. Чтобы получить справку по методу, щел­ кните на его имени в коде и нажмите <F1 >. Можно также добавить аналогичную справку и для собственных классов и методов.

Следует рассмотреть все перечислен ные исключения и реш ить, какие из них, каким именно образом и где обрабатывать.

Последний 111анс перех.в.а_та и.,с ч _ни,-

Программа FactorialException помещает все тело метода Main ( ) - за ис­ ключением последнего вывода на консоль - в обработчик исключений "по­ следнего шанса".

При разработке приложения всегда размещайте содержимое метода Main ( ) в trу-блоке, так как Main ( ) - стартовая точка программы, а значит, и конечная точка тоже. (Если вы пишете библиотеку классов,

ояшфищeет предназначенную для повторного использования, о необработанных исключениях можете не беспокоиться : о них должен позаботиться тот, кто эту библиотеку использует.)

Любое неперехваченное ранее исключение добирается до метода Main ( ) . Это последняя возможность перехватить исключение и не дать ему добраться до Windows, когда сообщение об ошибке окажется не слишком вразумитель­ ным и не даст конечному пользователю понять, что же произошло и как этого избежать.

роок аьoнлК дК ­,ь,П(К щ ) ,у ) къъь) ,ПкььdК ькКзоК

! rНОСИЕЕИННЧННЗОВПИПСТ ПОПИКИПО "0.0,. ПИ!ИВН ПЕИ ИЕПcРКИИ ПИС. ЧИПИНИНЕИЕСИrНИ ВИЕВИНОПНПИИПНТИЧОПО!НгП ИТгВНПЕПЗАЧНВНB ИЕВИЕВПИППОЗЕНИ!И ОЗИВНПИСгВНПКИВОПНЕИПВИНИЕЕИВrИСИ!ИКИИЕПНС

ЗАПОМНИ! ИП!ОНЕНСИС ОЗ ИЕПcРКИИПИИгЕИЕВИ ИeОЧИПИННСИИ ВdrТЕХ! ПОПИКИПОЗ ПИНЕИИrНОЧННЕЕС ВИТПИКИИЕПЕРИП!ОНЕНСИР ЕcИ!ЕИВ rНИОЗННЧОПНВН П ОЗСКИПСИЕcОПН rОПСВПСИПН!!ОЕЕ rОcНЧОПНВИcР rНОЧННЕЕСl \ВИ ЕcОПН rО ПОЧЕО!ПОЕВИ !Оc!ПС ППcРКИНВНЕОПИВСгПНППИ !Оr ЕЕВИВН

rОПВОНИПИС.ВОЗ ЕИВЕНСИИИ! И ННЧdЕ!ЗННЗОВКИИП rОЕcИ!П ИЧОТНПЕН !Оc!ИП ПИЕВИ!ЕНПНc Е ЧНrИЕНР ПЕИЗ ИП!ОНЕНСИИ ОЗ ИЕПcРКИИПИСТг ППcРКИНСВИТПИКИИЕПЕР!cС !НcНПИЗТИeОНПНcИЧНИ ЕЕОПИНТИПЕВПОПН ПИС rНОЧННЕЕС.

Генерирующие исключения выражения

n"'1-..

_ w ,!

.(,1"y.9

! '1","т"..,"

!1'1#..

."..g

,!1,#

'1".:> N,1#0!,.9 !

1"."'1#D..

.-,т.."..g

,#,

.#-9. ),'1#."..g

JJn '1#...0

)"'1-.g0

- )#- .,т!

,)#

)#'1.#.9#

"'1),.

)#'1.#.9

N,1#)"'1E.9:>

),'1#.".."

# N,1#9"(,1

'1!)"'1.9:>

'1"N,1-т:>

9# ,#,

!,#N,1#.!

,#т""

 

 

 

 

 

 

 

 

)0 ,

 

.

r a

_ и

 

 

 

 

 

r

 

 

й

 

 

 

 

 

r.41

),0

и

 

r,

 

'й1 ,

 

 

 

n9!'1!.

)#'1.#.9

р -,"т#

9:>

.-,т..".."

.#-9:>.

),'1#."..g

,#,

!,#N,1#.!

N,1,"-:>

 

 

 

 

 

 

 

 

 

 

r

 

 

и

 

 

 

 

 

 

 

 

rr и

 

 

 

 

 

 

 

 

 

r,

 

# , е

rки

 

 

ГЛАВА 9

яннбьoo) нярo?оeр нбьoo) рон, афр

246 ЧАСТЬ 1 Основы программирования на С#

С п и с к и эл е м е н то в с и с п ол ь з о в а н и е м

п е р е ч и сл е н и и

В ЭТО Й ГЛ А В Е . . .

)) Примеры nеречислеl'lий в реальном·мире )), Соз.q;зние и. п.р11мененv е переуислен111й

)J Использование hереt:iислений для определения флагов

ае)) Исполь ова1-1ие переч!llсленийк част й 1,:1нструкций выбора

.t. Т;з i озиананя вразпоаяояннсo oипнВсненияпрареаакосасаик ченар о акеарн и акеене оп еоонян аознаяoкненнеасниенбоняоом

а заяне кненнеасеяoояннсoипн боняатяаренрарреааиплSаеиелтзнu

снипл е яинспакосoзооаяoкненнеасниеро кеоНеаееееооаиеееення аепас

коаяосoрвткоарос

рвоп еоонян кненнеасряoояннсoипнВсненияпрарнааяo

одчнл росснрбее

акееене

,И -двннябодозианаяoаеиел боняSа

ПИс б1-1 реааипл г аесв внодаяоакненнеасниелоие зееоро еакосoк

звияароенасoиоеееенnа кояоев оп оенеянер е о кеесоониерр .он носони еоннсееооаяo енасoипл еее няодп однакнмеяoкоснзиви явирбеоиасoиоаяo овнодиолнсркоиееаиеряоеени

Перечисле11

ия в реальноN,1

мире

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

n

 

 

 

QЖд

 

 

. ЗЬ

 

 

 

 

 

 

 

 

 

 

 

 

 

'1!r.41$A

,'1!6'1 .(,1(,1'1,A

,!'1-T'1

-,D$$

-)-N,1.'1

-

'1A...'1

 

(,1(,1$'1!(,1

 

$

 

T!.,!.em

'1A !T'1!-$T--

$ , ,A'1A.$-.A'1$-(,1

 

 

A'1A.$-.A'1$A

р

T!..Ж.-

 

,!-T!-'1'1.-

 

,!.em

.A,D$-

,'1A,(,1A

)

Б., -,!(,1$'1..!-.

 

 

'1.'1AA

D)AT.

-..-.T--

 

 

!,'1$(,1

 

$N,1'1.$Ж!.AA

'1.-,'1!-T'1.'1

A'1'1,0 ,A'1A.$-.A'1 $.

$

),

..-T!

$-,!..N,1-ATA

 

$0 .

'1A...'1!(,1

 

 

(,1$'1A

a,'1.,!

A-.$ Ж,

.,

$-,..$

,A'1A.$-.A'1$-

 

 

D.AT!.

)

'1TA'1'1ATAЕT!

!Ж'1.'1-.$.$

Ж,

(,1.---

--,

.!,

n(,1A-T!

,A'1A.$-.A'1$g

D)AT!.

$O$TA

D.AT!.!.

 

,'1-r.41

!Ж,.'1!

$(,1A'1'1!

T.,

..,$

 

.

'1A...'1!(,1

(,1$'1A

 

,A'1A.$-.-.T

 

D.AT.

$

-!N,1,..T

 

 

'1.Ж!'1,

 

D.A_

T!),0

T$,!)

 

 

!,$-.'1$A D)AT!.!r.41!

 

,'1-r.41.

$

,...

,-.-T!'1.

 

D.AT!)

-(,1

,!

.,'1A--

ж__

 

 

 

1:1 п_т

1:1Гl

 

du

 

dQ

НdQ__

 

o

 

 

 

 

 

 

 

 

 

 

Б!..A,D$$

 

,'1$'1$(,1 ..T

'1.N,1'1,A

 

S!'1(,1,

 

$

),

(,1!.ATA

 

,..A

 

'1A !-!N,1'1.).T.

.T!

-!N,1,..$

!,'1-

 

$N,1 '1$0 е.,'1$(,1A'1

 

'1.

 

-..TA

ж_

_

 

 

 

 

_

_

жd_

_

 

d_

 

пd1:1тd1:1

п_До d

Q

п dQпп_

т

 

_

 

п Н Д тжпт Д

'1.--,

.N,1,).AT--

 

!

,..-

-$S$,.D$$

.$.,0

 

 

!'1r.41. '1$N,1(,1!.

 

!-,!..,-

 

 

 

T$,..--$S$,.D$$

 

 

-.A,-.T

 

 

!,'1Aem

,A.A'1'1!(,1-

E.Ж.!'1-

 

$п ,., ,'1..$.!

 

 

'1A -$..'1!

(,1A'1-.T--

 

),

(,1!.ATA

),'1.N,1$T.

$0

. ,'1$.!.A'1$$

,., ,A'1A.$-.A'1$A

 

е.,'1$(,1A'1

)'1-,

.$

,!r.41,.

 

.$Ж!

$N,1(,1A'1$T--

-,$-!,

,-T$

D.'1-T)

 

е..A

-,$-!,

 

T$,!.

 

)

,..,!(,1

 

 

D.'1-T.A

.'1-,

 

.$

$N,1(,1A'1$T--п

T.,

.T!

$0 T.,.A

(,1!.'1!

 

),'1.N,1$T.

,.,

,A'1A.$-.A'1$-

 

 

 

 

 

 

 

 

 

 

 

'1.,T$.A-,!A

,!.-A,'1A.'1!A

 

$-,!..N,1!).'1$A

 

,A'1A.$-.A'1$.

 

.,....AT

 

 

-,$-,$

,'1A,(,1A

T!)

$.$

 

$'1S!'1(,1.D$.

 

,!T!'1.-

 

'1-.'1.

 

)-A(,1

.,'1$(,1A'1О ),

 

'1A -(,1!.ATA

 

 

 

 

у!.(,1n)Оn

 

'1Q(n))

!nП :'1!w(,1.

wQA)'1!n

!

.!'11:1((,1. .(,1wQ.А)

п

и Тлл

(,1.1:1 A aQ'1(n.Q_

 

aQ'1(n.Q 9'1(,1n!(n(,1.

 

! Q'1n)).f\41

Q .

и ТТ

 

(,11:1.

aQ'1(n.(,1

n'1(,1_!(n(,1._

 

Р

Eo a_t-И

n_ o -И

О О

_._ Q

w 1,<."!-E

.$! J1

$'1 --($ !- '1"( JJ "'1 91

Соседние файлы в папке Информатика