ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π±ΠΎΡ‚Π° с ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ситуациями (exceptions)

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ Π˜Π‘ ΠΈ, ΠΊΠΎΠ³Π΄Π° ошибка Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ строку с ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° o ΡΡ‚Ρ€ΠΎΠΊΠΎΠΉ object o = «c» ;). Π―Π·Ρ‹ΠΊ C# позволяСт Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций. Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Main Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΈΠΌΠ΅Π» Π²ΠΈΠ΄. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° CompareTo, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ создаСтся экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π±ΠΎΡ‚Π° с ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ситуациями (exceptions) (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ строки описания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° o ΡΡ‚Ρ€ΠΎΠΊΠΎΠΉ.

object o = new object ();

ΠΈ Π²Π½ΠΎΠ²ΡŒ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Debug. Start Debugging.

Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния (runtime error) Ρ‚ΠΈΠΏΠ° «Object must be of type String», вызванная Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ фактичСским ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° CompareTo оказался ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, «Π½Π΅ ΡΠ²ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΊ ΡΡ‚Ρ€ΠΎΠΊΠ΅». Π’ ΡΡ‚ΠΎΠΌ случаС ΠΌΠ΅Ρ‚ΠΎΠ΄ CompareTo создаСт (throw) экзСмпляр класса ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации (сокращСнно, ИБ) Ρ‚ΠΈΠΏΠ° System. ArgumentException — наслСдника ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ класса System.Exception. Π‘Ρ€Π΅Π΄Π° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, сообщая, Ρ‡Ρ‚ΠΎ эта ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация ΠΎΡΡ‚Π°Π»Π°ΡΡŒ Π±Π΅Π· Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ со ΡΡ‚ΠΎΡ€ΠΎΠ½Ρ‹ ΠΊΠΎΠ΄Π° (unhandled).

Π―Π·Ρ‹ΠΊ C# позволяСт Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций. Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Main Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΈΠΌΠ΅Π» Π²ΠΈΠ΄.

string s = «b» ;

object o = new object ();

try.

{.

C.WriteLine (s.CompareTo (o));

}.

catch (Exception e).

{.

C.WriteLine (e);

}.

C.ReadLine ();

Π’Π½ΡƒΡ‚Ρ€ΡŒ «Π±Π»ΠΎΠΊΠ° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ» try { } ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° CompareTo, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ (throw) ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ (этот Ρ„Π°ΠΊΡ‚ указываСтся Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠΉ систСмС).

ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ ΡΡ‚Π΅ΠΊΡƒ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΠΉ «Π±Π»ΠΎΠΊ обнаруТСния» catch (Exception e){}. Π’ Π±Π»ΠΎΠΊ catch программист ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈ этом экзСмпляр созданного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса ArgumentException) пСрСдаСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ e Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠ° ΠΏΡ€Π΅Π΄ΠΊΠ° (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ‚ΠΈΠΏΠ° Exception). ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ ΡΡ‚Π΅ΠΊΡƒ, информация ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π΅ пСрСмСщСния накапливаСтся Π² ΡΠ²ΠΎΠΉΡΡ‚Π²Π΅ Message ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° e.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ C. WriteLine (e) (сокращСнная запись ΠΎΡ‚ WriteLine (e.Message); ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅) ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ сообщСниС, пСрСнСсСнноС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ e.

System.ArgumentException: Object must be of type String.

at System.String.CompareTo (Object value).

at StringTestProject.StringTest.Main (String[] args) in.

Π΄Π°Π»Π΅Π΅ слСдуСт ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ ΠΊ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ StringTest ΠΈ Π½ΠΎΠΌΠ΅Ρ€ строки ΠΊΠΎΠ΄Π°.

МоТно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ послС ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ источника Π˜Π‘ Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π˜Π‘ ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Для этого послС Π±Π»ΠΎΠΊΠ° catch слСдуСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π±Π»ΠΎΠΊ, ΠΎΠ·Π°Π³Π»Π°Π²ΠΈΠ² Π΅Π³ΠΎ слуТСбным словом finally. НабСритС Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ сразу послС Π±Π»ΠΎΠΊΠ° catch (ΠΏΠ΅Ρ€Π΅Π΄ C. ReadLine ();) ΠΊΠΎΠ΄.

finally { C. WriteLine («Always done»); }.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ Π˜Π‘ ΠΈ, ΠΊΠΎΠ³Π΄Π° ошибка Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ строку с ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° o ΡΡ‚Ρ€ΠΎΠΊΠΎΠΉ object o = «c» ;).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΎΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации являлся Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΠ΅Ρ‚ΠΎΠ΄ CompareTo, ΠΈ ΡΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° System. ArgumentException принял сообщСниС (Message) Object must be of type String, Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½ΠΎΠ΅ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС тСкста.

Если Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² «Π±Π»ΠΎΠΊ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ» try ΠΏΠ΅Ρ€Π΅Π΄ строкой C. WriteLine (s.CompareTo (o));

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²ΠΈΠ΄Π°.

if (!(o is string)).

throw new ArgumentException («Object is not of type String»);

Ρ‚ΠΎ Π΄ΠΎ Π²Ρ…ΠΎΠ΄Π° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ CompareTo Π΄Π΅Π»ΠΎ Π½Π΅ Π΄ΠΎΠΉΠ΄Π΅Ρ‚ (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° CompareTo, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ создаСтся экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ строкС, относится ΠΊ ΡƒΡΠ»ΠΎΠ²Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ языка C#. ВслСд Π·Π° ΡΠ»ΡƒΠΆΠ΅Π±Π½Ρ‹ΠΌ словом if Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках располагаСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π΅ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true ΠΈΠ»ΠΈ false. Π”Π°Π»Π΅Π΅ находится ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² {}), Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ true.

Класс String, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π² интСрфСйс IComparable, Π΄Π΅Π»Π°Π΅Ρ‚ свои ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ сравнимыми ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ характСристикам.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ