Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° JavaΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 54

Автор Н.А. Вязовик

* Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° throw Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ примСняСтся для явного пороТдСния ошибки. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈ здСсь ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ мСсто возникновСния ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации.

* АсинхронныС ошибки Π²ΠΎ врСмя исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

- ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚Π°ΠΊΠΈΡ… ошибок ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сбои Π²Π½ΡƒΡ‚Ρ€ΠΈ самой Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ (вСдь ΠΎΠ½Π° Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ), ΠΈΠ»ΠΈ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° stop() Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ° выполнСния Thread.

- Π’ этом случаС Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ мСсто ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π³Π΄Π΅ происходит ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация. Если ΠΌΡ‹ попытаСмся ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ выполнСния (Π²Ρ‹Π·Π²Π°Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ stop() ), Π½Π°ΠΌ Π½Π΅ удастся ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ выраТСния этот ΠΏΠΎΡ‚ΠΎΠΊ остановится.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, всС ошибки Π² Java дСлятся Π½Π° синхронныС ΠΈ асинхронныС. Π‘ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ мСсто Π² ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ возникновСния ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Java являСтся строгим языком Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ всС выраТСния Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ сбоя ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹, ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ошибки ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ нСдостаточной Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ программиста (отсутствуСт Π½ΡƒΠΆΠ½Ρ‹ΠΉ класс, ΠΈΠ»ΠΈ индСкс массива Π²Ρ‹ΡˆΠ΅Π» Π·Π° допустимыС Π³Ρ€Π°Π½ΠΈΡ†Ρ‹), Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎ нСзависящим ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ (ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» Ρ€Π°Π·Ρ€Ρ‹Π² сСтСвого соСдинСния, сбой Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ТСсткого диска ΠΈ Π΄Ρ€.).

АсинхронныС ошибки Π³ΠΎΡ€Π°Π·Π΄ΠΎ слоТнСС Π² ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΈ исправлСнии. ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ сбоСв Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ошибки создатСлСй JVM, Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой, Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΉ сбой ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. ВсС ΠΆΠ΅ соврСмСнныС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ довольно Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ сбои происходят ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ (ΠΏΡ€ΠΈ условии использования качСствСнных ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ΡƒΡŽΡ‰ΠΈΡ…).

Аналогичная ситуация Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ ΠΈ Π² случаС с ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ остановкой ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² исполнСния. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это дСйствиС выполняСтся ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой, Π½ΠΈΠΊΠΎΠ³Π΄Π° нСльзя ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ мСстС остановится ΠΏΠΎΡ‚ΠΎΠΊ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ Π΄Π°Ρ‚ΡŒ сбой просто ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΊ остановился Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ остановка Π½Π΅ рСкомСндуСтся. Π’ Π»Π΅ΠΊΡ†ΠΈΠΈ 12 Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ управлСния ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ°.

ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся ΠΎΡ‚ ΠΊΠΎΠ΄Π°, Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅Π³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Π½Π° блиТайший Π±Π»ΠΎΠΊ catch (ΠΈΠ»ΠΈ Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ стСку) ΠΈ создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, унаслСдованный ΠΎΡ‚ класса Throwable, ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² (см. Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов-ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π΅Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. БобствСнно, Π² Π±Π»ΠΎΠΊΠ΅ catch указываСтся ΠΈΠΌΠ΅Π½Π½ΠΎ класс ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ситуации. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок рассматриваСтся Π½ΠΈΠΆΠ΅.

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ пСрСдаСтся информация ΠΎΠ± ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации, зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ эта ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π°. Если это

* ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² Ρ‚ΠΎ мСсто, Π³Π΄Π΅ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½;

* конструктор, Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Ρ‚ΡƒΠ΄Π°, Π³Π΄Π΅ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, примСняя ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ new );

* статичСский ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Ρ‚ΡƒΠ΄Π°, Π³Π΄Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ классу, ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π²ΡˆΠ΅Π΅ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ДопускаСтся созданиС собствСнных классов ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций. ΠžΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ΅Ρ‚ΡΡ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° наслСдования, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ класс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ унаслСдован ΠΎΡ‚ класса Throwable, ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ².

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ try-catch

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС конструкция выглядит Ρ‚Π°ΠΊ:


try {

...

}

catch(SomeExceptionClass e) {

...

}

catch(AnotherExceptionClass e) {

...

}


Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π‘Π½Π°Ρ‡Π°Π»Π° выполняСтся ΠΊΠΎΠ΄, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° try. Если Π²ΠΎ врСмя Π΅Π³ΠΎ выполнСния Π½Π΅ происходит Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π½Π΅ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… ситуаций, Ρ‚ΠΎ Π΄Π°Π»Π΅Π΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся Π·Π° Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Π½ΡƒΡŽ скобку послСднСго ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° catch, ассоциированного с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ try.

Если Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… try Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация, Ρ‚ΠΎ Π΄Π°Π»Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° производится ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· пСрСчислСнных Π½ΠΈΠΆΠ΅ сцСнариСв.

Π’ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация, класс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Π½ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ² catch. Π’ этом случаС производится Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°, ассоциированного с Π΄Π°Π½Π½Ρ‹ΠΌ catch (Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки). Π”Π°Π»Π΅Π΅, Ссли ΠΊΠΎΠ΄ Π² этом Π±Π»ΠΎΠΊΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ ΠΈ вСсь ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅), ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΎΠΉ скобкой послСднСго catch. Если ΠΊΠΎΠ΄ Π² catch Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π½Π΅ ΡˆΡ‚Π°Ρ‚Π½ΠΎ, Ρ‚ΠΎ ΠΈ вСсь try Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π½Π΅ΡˆΡ‚Π°Ρ‚Π½ΠΎ ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅.

Если Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация, класс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ catch, Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ всСго try Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π½Π΅ΡˆΡ‚Π°Ρ‚Π½ΠΎ.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ try-catch-finally

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ finally ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°. Π’Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация Π² Π±Π»ΠΎΠΊΠ΅ try, Π·Π°Π΄Π°Π½ Π»ΠΈ подходящий Π±Π»ΠΎΠΊ catch, Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π»ΠΈ ошибка Π² самом Π±Π»ΠΎΠΊΠ΅ catch,- всС Ρ€Π°Π²Π½ΠΎ Π±Π»ΠΎΠΊ finally Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² исполнСн.

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполнСния Ρ‚Π°ΠΊΠΎΠΉ конструкции ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ: Ссли ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π±Π»ΠΎΠΊ finally. Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Ссли ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ finally выполняСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ ΠΈ вСсь ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try выполняСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.

Если Π²ΠΎ врСмя выполнСния Π±Π»ΠΎΠΊΠ° try Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ сущСствуСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ catch, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, происходит Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ связанного с catch Π±Π»ΠΎΠΊΠ°. Если Π±Π»ΠΎΠΊ catch выполняСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Π»ΠΈΠ±ΠΎ Π½Π΅Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, всС Ρ€Π°Π²Π½ΠΎ Π·Π°Ρ‚Π΅ΠΌ выполняСтся Π±Π»ΠΎΠΊ finally. Если Π±Π»ΠΎΠΊ finally Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΡΡ Π±Π»ΠΎΠΊ catch.

Если Π² спискС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² catch Π½Π΅ находится Ρ‚Π°ΠΊΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π» Π±Ρ‹ возникшСС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ всС Ρ€Π°Π²Π½ΠΎ выполняСтся Π±Π»ΠΎΠΊ finally. Π’ этом случаС, Ссли finally Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, вСсь try Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ Π½Π΅Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π»ΠΎ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΎ исполнСниС try.

Π’ΠΎ всСх случаях, Ссли Π±Π»ΠΎΠΊ finally Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π½Π΅Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ вСсь try Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ Π½Π΅Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ примСнСния конструкции try-catch-finally.


try {

byte [] buffer = new byte[128];

FileInputStream fis =

new FileInputStream("file.txt");

while(fis.read(buffer) > 0) {

... ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ...

}

}

catch(IOException es) {

... ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ...

}

finally {

fis.flush();

fis.close();

}


Если Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ очистки Π±ΡƒΡ„Π΅Ρ€Π° ΠΈ закрытия Ρ„Π°ΠΉΠ»Π° сразу послС окончания ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибки Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ закрытия Ρ„Π°ΠΉΠ»Π° Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚. Π•Ρ‰Π΅ Ρ€Π°Π· ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊ finally Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π² любом случаС, Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅Ρ‚, Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ это ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

Π’ конструкции try-catch-finally ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ являСтся использованиС ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· частСй ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° catch ΠΈΠ»ΠΈ finally. Π’ΠΎ Π΅ΡΡ‚ΡŒ конструкция


try {

...

}

finally {

...

}


являСтся Π²ΠΏΠΎΠ»Π½Π΅ допустимой. Π’ этом случаС Π±Π»ΠΎΠΊ finally ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½, хотя сама ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π° для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ.

Если ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации Π² ΠΊΠΎΠ΄Π΅ Π½Π΅ прСдусмотрСна, Ρ‚ΠΎ ΠΏΡ€ΠΈ Π΅Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΎ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π° для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ΄Ρƒ Π±ΠΎΠ»Π΅Π΅ высокого уровня. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π² Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации Π΄ΠΎΠ»ΠΆΠ΅Π½ произвСсти ΠΎΠ½. Если ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π² ΠΊΠΎΠ΄Π΅ самого высокого уровня (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ main() ), Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ систСмС Java ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΎ (Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ - Π±ΡƒΠ΄Π΅Ρ‚ остановлСн ΠΏΠΎΡ‚ΠΎΠΊ исполнСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° такая ошибка).

ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° throw

Помимо Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ прСдопрСдСлСнная ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π΅Π½Π° ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ систСмой Java, программист сам ΠΌΠΎΠΆΠ΅Ρ‚ явно ΠΏΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ. ДСлаСтся это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° throw.

НапримСр:


... public int calculate(int theValue) {

if( theValue < 0) {

throw new Exception(

"ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ для вычислСния Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½

Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ");

}

}

...

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅; Ссли это условиС Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° throw пороТдаСтся ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация. (Для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ компиляции Ρ‚Π°ΠΊΠΆΠ΅ трСбуСтся Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ throws Exception - это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ рассматриваСтся Π½ΠΈΠΆΠ΅.)

ΠœΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅ΠΌΡƒ Π΅Π³ΠΎ ΠΊΠΎΠ΄Ρƒ. Для этого Π² сигнатурС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° примСняСтся ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово throws, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ пСрСчислСны Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ всС ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ситуации, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π²ΠΈΠ΄Ρƒ: