Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java. cat. Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java Ρ„ΠΎΡ‚ΠΎ. Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java-cat. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° cat. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ происходит ошибка, создаётся ΠΈ пСрСдаётся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. Π’ любом случаС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ловится ΠΈ обрабатываСтся. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ благодаря самой систСмС, Π»ΠΈΠ±ΠΎ Π²Ρ‹ сами ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. БистСмныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании языка Java ΠΈΠ»ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‘ΠΌΠΎΠ² доступа ΠΊ систСмС. Π’Π°ΡˆΠΈ собствСнныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ спСцифичСскиС ошибки вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

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

ВСрнёмся ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ с Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ. Π”Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½ΡƒΠ»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ условия. Но Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»ΡŒ оказался Π½ΡƒΠ»Ρ‘ΠΌ? Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² контСкстС вашСй Π·Π°Π΄Π°Ρ‡ΠΈ извСстно, ΠΊΠ°ΠΊ слСдуСт ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠΉ ситуации. Но, Ссли Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»ΡŒ Π²ΠΎΠ·Π½ΠΈΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ, Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ Ρ‚ΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΠ·Π±ΡƒΠ΄ΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π° Π½Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ исполнСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

БущСствуСт ΠΏΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ…: try, catch, throw, throws, finally. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Π±Π»ΠΎΠΊ try. Если ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, Ρ‚ΠΎ ΠΎΠ½ΠΎ создаётся ΠΈ пСрСдаётся дальшС. Π’Π°Ρˆ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π±Π»ΠΎΠΊΠ° catch ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ. БистСмныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ автоматичСски ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ самой систСмой. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ throw. Π›ΡŽΠ±ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, созданноС ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² Π΅Π³ΠΎ интСрфСйсС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом throws. Π›ΡŽΠ±ΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠ° try, помСщаСтся Π² Π±Π»ΠΎΠΊ finally

БхСматичСски ΠΊΠΎΠ΄ выглядит Ρ‚Π°ΠΊ:

БущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Trowable. Π’ Π½Π΅Π³ΠΎ входят Π΄Π²Π° класса Exception ΠΈ Error.

Класс Exception ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π½Π΅Π³ΠΎ для создания собствСнных Ρ‚ΠΈΠΏΠΎΠ² ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Для распространённых ошибок ΡƒΠΆΠ΅ сущСствуСт класс RuntimeException, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ массива.

Класс Error слуТит для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок Π² самом языкС Java ΠΈ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π²Π°ΠΌ Π½Π΅ придётся ΠΈΠΌΠ΅Ρ‚ΡŒ с Π½ΠΈΠΌ Π΄Π΅Π»ΠΎ.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π½Π°ΠΌ (ΠΊΠ°ΠΊ ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠΌΡƒ ΠΊΠΎΡ‚Ρƒ) хочСтся ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π° Ρ‡Ρ‚ΠΎ происходит, Ссли ΠΎΡˆΠΈΠ±ΠΊΡƒ Π½Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠΌ число ΠΊΠΎΡ‚ΠΎΠ² Π² вашСй ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Π΅ Π½Π° ноль, хотя ΠΌΡ‹ ΠΈ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ‚ΠΎΠ² Π½Π° ноль Π΄Π΅Π»ΠΈΡ‚ΡŒ нСльзя!

Π― помСстил ΠΊΠΎΠ΄ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ‰Π΅Π»Ρ‡ΠΊΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ. Когда систСма Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Java ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ дСлСния Π½Π° ноль, ΠΎΠ½Π° создаёт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ Π΅Π³ΠΎ. Π”Π° Π²ΠΎΡ‚ Π½Π΅Π·Π°Π΄Π°Ρ‡Π°, Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ, хотя это Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹. Видя Π²Π°ΡˆΡƒ Π±Π΅Π·Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ стандартный систСмный ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отличаСтся Π²Ρ€Π΅Π΄Π½Ρ‹Ρ… Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΎΠΌ. Он останавливаСт Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ сообщСниС ΠΎΠ± ошибкС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ LogCat:

Как Π²ΠΈΠ΄Π½ΠΎ, созданный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΊ классу ArithmeticException, Π΄Π°Π»Π΅Π΅ систСмный ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ любСзно Π²Ρ‹Π²Π΅Π» ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ошибки ΠΈ мСсто возникновСния.

Вряд Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹, Ссли Π²Ρ‹ Ρ‚Π°ΠΊ ΠΈ оставитС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибки систСмС. Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒΡΡ с Ρ‚Π°ΠΊΠΎΠΉ ошибкой, Ρ‚ΠΎ скорСС всСго Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ просто удалят. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ.

ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² Π±Π»ΠΎΠΊ try, Π° Π² Π±Π»ΠΎΠΊΠ΅ catch ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ Π½Π΅ закрываСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ с Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π° ноль.

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

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ try ΠΈ catch Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ совмСстно Π² ΠΏΠ°Ρ€Π΅. Π₯отя Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ситуации, ΠΊΠΎΠ³Π΄Π° catch ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ нСсколько Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² try.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ описаниС ошибки, Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ e ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‘Π³ΠΎ.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, класс Trowable, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ относится ArithmeticException Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ описаниС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Но Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ e.toString.

НСсколько ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Ρ… мСст. НапримСр, ΠΊΡ€ΠΎΠΌΠ΅ дСлСния Π½Π° ноль, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ошибка индСксации массива. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π²Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² catch для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ ΠΎΠ½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΏΠΎ порядку. Если ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ Ρƒ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ продолТаСтся с мСста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слСдуСт Π·Π° Π±Π»ΠΎΠΊΠΎΠΌ try/catch.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ массив с трСмя элСмСнтами, Π½ΠΎ обращаСмся ΠΊ Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚ΠΎΠΌΡƒ элСмСнту, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π·Π°Π±Ρ‹Π»ΠΈ, Ρ‡Ρ‚ΠΎ отсчёт Ρƒ массива начинаСтся с нуля. Если ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ zero Ρ€Π°Π²Π½Ρ‹ΠΌ Π½ΡƒΠ»ΡŽ, Ρ‚ΠΎ сработаСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ дСлСния Π½Π° ноль, ΠΈ ΠΌΡ‹ Π΄Π°ΠΆΠ΅ Π½Π΅ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎ сущСствовании Π²Ρ‚ΠΎΡ€ΠΎΠΉ ошибки. Но допустим, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ вычислСний Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ стало Ρ€Π°Π²Π½ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅. Π’ΠΎΠ³Π΄Π° нашС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ArithmeticException Π½Π΅ сработаСт. Но сработаСт Π½ΠΎΠ²ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ArrayIndexOutOfBoundsException. А дальшС всё ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΊΠ°ΠΊ Ρ€Π°Π½ΡŒΡˆΠ΅.

Π’ΡƒΡ‚ всСгда Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ. ΠŸΡ€ΠΈ использовании мноТСствСнных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² catch ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ подклассов ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΡ… супСрклассов. Π˜Π½Π°Ρ‡Π΅, супСркласс Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ всС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, имСя Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π°. Π˜Π½Ρ‹ΠΌΠΈ словами, Exception Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²Ρ‹ΡˆΠ΅ ArithmeticException ΠΈ ArrayIndexOutOfBoundsException. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сама Π·Π°ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ нСпорядок ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π΅Ρ‚ вас, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ порядок Π½Π΅ годится. Π£Π²ΠΈΠ΄Π΅Π² Ρ‚Π°ΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ пСрСнСсти Π±Π»ΠΎΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π½ΠΈΠΆΠ΅.

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ try

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ try ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ. Если Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ своСго ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° catch для опрСдСлСния ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ρ‚ΠΎ ΠΈΠ΄Ρ‘Ρ‚ поиск ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° catch Ρƒ внСшнСго Π±Π»ΠΎΠΊΠ° try ΠΈ Ρ‚.Π΄. Если подходящий catch Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½, Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сама систСма (Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ годится).

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ throw

Π§Π°ΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ сама систСма. Но ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° throw. Код выглядит Ρ‚Π°ΠΊ:

Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса Throwable ΠΈΠ»ΠΈ Π΅Π³ΠΎ наслСдников. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Throwable ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ catch ΠΈΠ»ΠΈ стандартным способом Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ new.

ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ для ΠΊΠ½ΠΎΠΏΠΊΠΈ:

ΠœΡ‹ объявили ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Cat, Π½ΠΎ Π·Π°Π±Ρ‹Π»ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² onCreate(). Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ систСма, Π° Π² Π»ΠΎΠ³Π°Ρ… ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сообщСниС ΠΎΠ± ошибкС. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, throw new UnsupportedOperationException(«ΠšΠΎΡ‚ΠΈΠΊ Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½»);.

Π’ любом случаС ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибки систСмС. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

ΠŸΠΎΡ‚ΠΎΠΊ выполнСния останавливаСтся нСпосрСдствСнно послС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° throw ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ. ΠŸΡ€ΠΈ этом ищСтся блиТайший Π±Π»ΠΎΠΊ try/catch ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ Ρ‚ΠΈΠΏΠ°.

ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ошибки.

ΠœΡ‹ создали Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса NullPointerException. МногиС классы ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΊΡ€ΠΎΠΌΠ΅ стандартного конструктора ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ с пустыми скобками ΠΈΠΌΠ΅ΡŽΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ конструктор с строковым ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ тСкст ΠΈΠ· Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ getMessage(), Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈ сдСлали Π² Π±Π»ΠΎΠΊΠ΅ catch.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ закроСтся Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ, Π° Π±ΡƒΠ΄Π΅Ρ‚ просто Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ сообщСния Π² Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Toast.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ throws

Если ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ сам Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π΄Π°Ρ‚ΡŒ это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π΅Π³ΠΎ ΠΊΠΎΠ΄ ΠΌΠΎΠ³ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΠ± этом ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ. Для этого ΠΊ объявлСнию ΠΌΠ΅Ρ‚ΠΎΠ΄Π° добавляСтся конструкция throws, которая пСрСчисляСт Ρ‚ΠΈΠΏΡ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (ΠΊΡ€ΠΎΠΌΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Error ΠΈ RuntimeException ΠΈ ΠΈΡ… подклассов).

ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° объявлСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ throws:

Π’ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ список_ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ список ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ. А Π² Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ.

Если Π²Ρ‹ запуститС ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π˜ΡΠΏΡ€Π°Π²ΠΈΠΌ ΠΊΠΎΠ΄.

ΠœΡ‹ помСстили Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Π±Π»ΠΎΠΊ try ΠΈ Π²Ρ‹Π·Π²Π°Π»ΠΈ Π±Π»ΠΎΠΊ catch с Π½ΡƒΠΆΠ½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ошибки Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ finally

Когда ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° направляСтся ΠΏΠΎ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ источником ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. НапримСр, ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ ΠΈΠ·-Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π±Ρ‹Π» ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ finally.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово finally создаёт Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠ° try/catch, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π·Π° Π½ΠΈΠΌ. Π‘Π»ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ finally Π½Π΅ обязатСлСн, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ наличия Π»ΠΈΠ±ΠΎ catch, Π»ΠΈΠ±ΠΎ finally.

ВстроСнныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Java

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ нСсколько Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… систСмных ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ подклассами Ρ‚ΠΈΠΏΠ° RuntimeException ΠΈ ΠΈΡ… Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² список throws. Π’ΠΎΡ‚ нСбольшой список нСпровСряСмых ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.

Бписок провСряСмых систСмных ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² список throws.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ собствСнных классов ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

БистСма Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΈΠ½ΠΎΠ³Π΄Π° Π²Π°ΠΌ придётся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнный Ρ‚ΠΈΠΏ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ для вашСго прилоТСния. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Exception (напомню, Ρ‡Ρ‚ΠΎ этот класс наслСдуСтся ΠΎΡ‚ Trowable) ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Throwable. Π›ΠΈΠ±ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΏΠΎ Π»ΠΎΠ³ΠΈΠΊΠ΅ с вашим ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ.

ΠœΡ‹ создали собствСнный класс HungryCatException, Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ testMethod() Π΅Π³ΠΎ Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π°Π΅ΠΌ, Π° ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ этот ΠΌΠ΅Ρ‚ΠΎΠ΄. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ нашС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ сработаСт.

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ класс ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ с конструктором, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚-строку, Ρ‚Π°ΠΊΠΆΠ΅ просто.

Π•Ρ‰Ρ‘ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ toString().

Π’Π΅ΠΏΠ΅Ρ€ΡŒ класс содСрТит Π΄Π²Π° конструктора. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ конструкторС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструктор Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ String, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом super.

ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

МоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π»ΡŽΠ±Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. ΠžΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ΅Ρ‚ΡΡ это ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΎΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса всСх ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Exception:

Подобная конструкция Π½Π΅ упустит Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, поэтому Π΅Ρ‘ слСдуСт Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² самом ΠΊΠΎΠ½Ρ†Π΅ списка ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π° Π½Π΅ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

BestProg

Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² лямбда-выраТСниях. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Поиск Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсах:

1. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ гСнСрирования ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² лямбда-выраТСниях

Как ΠΈ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, Π² лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Π²ΡƒΡ… Π²ΠΈΠ΄ΠΎΠ²:

2. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ гСнСрирования стандартного ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ
2.1. Π”Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… чисСл. Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ дСлСния Π½Π° ноль

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ приводится лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ дСлСния Π΄Π²ΡƒΡ… чисСл. Π’ ΠΊΠΎΠ΄Π΅ лямбда-выраТСния провСряСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ дСлитСля. Если это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ 0, Ρ‚ΠΎ гСнСрируСтся стандартноС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ArithmeticException с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ сообщСниСм.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

2.2. ΠŸΠΎΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ΅ суммированиС массивов. Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс. Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° лямбда-выраТСния Π² ΠΌΠ΅Ρ‚ΠΎΠ΄

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ трСбования ΠΊ массивам:

Лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Для выполнСния этого Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main() ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ использованиС лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.

РСшСниС. Богласно ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½ΡƒΠΆΠ½ΠΎ ввСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ классы ΠΈ интСрфСйс:

ВСкст Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π΄Π°Π»Π΅Π΅

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ гСнСрирования ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ обрабатываСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ классом

Розв’язок. ВСкст Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ.

ПослС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выдаст ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

BestProg

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Поиск Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсах:

1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация?

Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация – это программная ошибка, которая Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π²ΠΎ врСмя выполнСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ ошибка ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ логичСской ошибкой программиста Π²ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π² случаях:

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π΅ΡΡ‚ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌ элСмСнтом написания ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Java.

2. ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² языкС Java

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

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

3. Какими способами ΠΌΠΎΠ³ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ?

Π’ языкС Java ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… способов:

4. Π’ ΠΊΠ°ΠΊΠΈΡ… случаях вызываСтся стандартный ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Java?

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Java вызываСтся Π² случаях, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°:

Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° содСрТит собствСнный ΠΊΠΎΠ΄ try…catch для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации, Ρ‚ΠΎΠ³Π΄Π° стандартный ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π½Π΅ вызываСтся.

5. КакиС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² Java?

Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² Java ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова:

Π’ языкС Java ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ситуации) ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ…. Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΠ»Π° своС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

Π’ Π±Π»ΠΎΠΊΠ΅ try Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ, Π² случаС возникновСния ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации, ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π’Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° try ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, способныС ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Однако, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ try ΠΈ catch ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ finally ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

7. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ гСнСрирования ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ стандартным ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Java

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

ВСкст класса DemoExceptions ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

Если Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ классС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ DivNumbers() ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ

Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹ΠΉ стандартный ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ сообщСниС

8. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° try…catch

ВСкст класса DemoExceptions ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΡ€ΠΈ использовании ΠΌΠ΅Ρ‚ΠΎΠ΄Π° DivNumbers2() Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ классС

систСма выдаст ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ послС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅

МоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ собствСнного сообщСния ΠΎΠ± ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π½Π° стандартноС сообщСниС. Π’ этом случаС Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ тСкст Π² Π±Π»ΠΎΠΊΠ΅ catch Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ

ПослС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ

ВСкст класса DemoExceptions ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ

Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ всСгда. И ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ

ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° DivNumbers3() Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ классС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

10. Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ описания ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ? ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

11. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций (нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² catch )

РСализация класса DivArrays ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ

ИспользованиС класса Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Java

Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java. 023202045ea7de248922c6458ef3a3bf95ca86401c13c03ae6c800c6a0fcc89a. Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java Ρ„ΠΎΡ‚ΠΎ. Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java-023202045ea7de248922c6458ef3a3bf95ca86401c13c03ae6c800c6a0fcc89a. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 023202045ea7de248922c6458ef3a3bf95ca86401c13c03ae6c800c6a0fcc89a. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ происходит ошибка, создаётся ΠΈ пСрСдаётся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. Π’ любом случаС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ловится ΠΈ обрабатываСтся. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ благодаря самой систСмС, Π»ΠΈΠ±ΠΎ Π²Ρ‹ сами ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. БистСмныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании языка Java ΠΈΠ»ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‘ΠΌΠΎΠ² доступа ΠΊ систСмС. Π’Π°ΡˆΠΈ собствСнныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ спСцифичСскиС ошибки вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций (exception handling) β€” ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ языков программирования, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для описания Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ошибки Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ (ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ приводят ΠΊ нСвозмоТности (бСссмыслСнности) дальнСйшСй ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π΅Ρ‘ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Бинтаксис

Π—Π΄Π΅ΡΡŒ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ getAreaValue ΠΌΡ‹ бросаСм ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ IllegalArgumentException с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова throw. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π² сигнатурС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° отсутствуСт throws IllegalArgumentException, это Π½Π΅ сдСлано ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ IllegalArgumentException являСтся Π½Π΅ провСряСмым, ΠΎ Π½ΠΈΡ… ΠΌΡ‹ Π΅Ρ‰Ρ‘ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ.

ΠžΠ±Ρ‰ΠΈΠΉ Π²ΠΈΠ΄ конструкции для «ΠΏΠΎΠΈΠΌΠΊΠΈ» ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’ нашСм случаС для ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎΠΉΠΌΠ°Π»ΠΈ IllegalArgumentException ΠΈ Π·Π°Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π΄Π°Π½Π½ΠΎΠ΅ событиС. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ «ΠΏΠΎΡ‡ΠΈΠ½ΠΈΡ‚ΡŒ» Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠΎΠ»ΠΎΠΌΠΊΡƒ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ, Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΆΠ΅ ΠΌΡ‹ ΡƒΠ³Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ :). По этому ΠΌΡ‹ пробрасываСм Π΄Π°Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ дальшС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ «throw e;». Π’Π°ΠΊΠΎΠ΅ часто ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° сСрвСрах ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ(Π²Π΅Π±-сСрвСрах).

finally

Иногда трСбуСтся Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ участок ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±Ρ‹Π»ΠΈ Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Ρ‹. Для создания Ρ‚Π°ΠΊΠΎΠ³ΠΎ участка ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово finally. Π”Π°ΠΆΠ΅ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π½Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π΅Π½Π½ΠΎΠΌΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ Ρ€Π°Π·Π΄Π΅Π»Π° catch, Π±Π»ΠΎΠΊ finally Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π·Π° Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ try. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° try Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·Π΄Π΅Π» catch ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊ finally. Π‘Π»ΠΎΠΊ finally ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π΅Π½ для закрытия Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ освобоТдСния Π»ΡŽΠ±Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсов, Π·Π°Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ использования Π² Π½Π°Ρ‡Π°Π»Π΅ выполнСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ класса с двумя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… происходит ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, Π½ΠΎ Π² ΠΎΠ±ΠΎΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ выполняСтся ΠΊΠΎΠ΄ Ρ€Π°Π·Π΄Π΅Π»Π° finally.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ procA ΠΈΠ·-Π·Π° возбуТдСния ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ происходит ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Π±Π»ΠΎΠΊΠ° try, Π½ΠΎ ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ Β«Π½Π°Ρ€ΡƒΠΆΡƒΒ» выполняСтся Ρ€Π°Π·Π΄Π΅Π» finally. Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ procB Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ стоящСго Π² try-Π±Π»ΠΎΠΊΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° return, Π½ΠΎ ΠΈ ΠΏΡ€ΠΈ этом ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° выполняСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π±Π»ΠΎΠΊΠ° finally. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

ВсС классы ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ошибки ΡΠ²Π»ΡΡŽΡ‚ΡΡ наслСдниками класса java.lang.Throwable. Волько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ этого класса ΠΈΠ»ΠΈ Π΅Π³ΠΎ наслСдников ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ «Π±Ρ€ΠΎΡˆΠ΅Π½Ρ‹» JVM ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ «Π±Ρ€ΠΎΡˆΠ΅Π½Ρ‹» Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова throw.

ΠŸΡ€ΡΠΌΡ‹ΠΌΠΈ наслСдниками класса Throwable ΡΠ²Π»ΡΡŽΡ‚ΡΡ Error ΠΈ Exception.

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Java основноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ слСдуСт ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Exception. Π­Ρ‚Π° иСрархия Ρ‚Π°ΠΊΠΆΠ΅ раздСляСтся Π½Π° Π΄Π²Π΅ Π²Π΅Ρ‚Π²ΠΈ: ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΎΡ‚ класса RuntimeException, ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠ° RuntimeException Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ вслСдствиС ошибок программирования. ВсС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡΠ²Π»ΡΡŽΡ‚ΡΡ слСдствиСм Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ стСчСния ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ошибок Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Рассмотрим основныС классы ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java. . Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java Ρ„ΠΎΡ‚ΠΎ. Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° . Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ происходит ошибка, создаётся ΠΈ пСрСдаётся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. Π’ любом случаС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ловится ΠΈ обрабатываСтся. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ благодаря самой систСмС, Π»ΠΈΠ±ΠΎ Π²Ρ‹ сами ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. БистСмныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании языка Java ΠΈΠ»ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‘ΠΌΠΎΠ² доступа ΠΊ систСмС. Π’Π°ΡˆΠΈ собствСнныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ спСцифичСскиС ошибки вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java. i. Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java Ρ„ΠΎΡ‚ΠΎ. Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java-i. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° i. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ происходит ошибка, создаётся ΠΈ пСрСдаётся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. Π’ любом случаС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ловится ΠΈ обрабатываСтся. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ благодаря самой систСмС, Π»ΠΈΠ±ΠΎ Π²Ρ‹ сами ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. БистСмныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании языка Java ΠΈΠ»ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‘ΠΌΠΎΠ² доступа ΠΊ систСмС. Π’Π°ΡˆΠΈ собствСнныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ спСцифичСскиС ошибки вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ своих классов ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

Π₯отя встроСнныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Java ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ частых ошибок, вСроятно, Π²Π°ΠΌ потрСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ваши собствСнныС Ρ‚ΠΈΠΏΡ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ситуаций, спСцифичных для Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ достаточно просто ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ: просто ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ подкласс Exception (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, разумССтся, являСтся подклассом Throwable). Π’Π°ΡˆΠΈ подклассы Π½Π΅ обязаны Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ β€” Π²Π°ΠΆΠ½ΠΎ само ΠΈΡ… присутствиС Π² систСмС Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠ°ΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

ΠžΠ΄Π½ΠΎΠΌΡƒ Π±Π»ΠΎΠΊΡƒ try ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ сразу нСсколько Π±Π»ΠΎΠΊΠΎΠ² catch с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ классами ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.

Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ссли ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок Π½Π΅ отличаСтся.

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

НаслСдованиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π±Ρ€ΠΎΡΠ°ΡŽΡ‰ΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

МоТно лишь ΡΡƒΠΆΠ°Ρ‚ΡŒ класс ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

Как Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ провСряСмоС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ обрабатывая Π΅Π³ΠΎ (Ρ…Π°ΠΊ)

НСт Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСфлСксии ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ API языка java ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ магию :).

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ рСфлСксия для получСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Unsafe Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ срСдствами это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ. Π£ класса Unsafe ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ конструктор. А Ссли ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ getUnsafe() Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ SecurityException.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ я Ρ…ΠΎΡ‚Π΅Π» ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сСбС ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΡƒ ΠΏΠΎ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ. Но ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° выросла Π² ΡΡ‚Π°Ρ‚ΡŒΡŽ πŸ™‚

НадСюсь ΠΎΠ½Π° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΡƒ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ собСсСдованиСм, ΠΈΠ»ΠΈ просто Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ/ΡƒΠ³Π»ΡƒΠ±ΠΈΡ‚ΡŒ знания πŸ™‚ Бпасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!

Если Π’Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ ΡΡ‚Π°Ρ‚ΡŒΡ, проголосуйтС Π·Π° Π½Π΅Π΅

Голосов: 86 Π“ΠΎΠ»ΠΎΡΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java. loading. Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java Ρ„ΠΎΡ‚ΠΎ. Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java-loading. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ программисту Ссли Π² ΠΊΠΎΠ΄Π΅ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль java. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° loading. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ происходит ошибка, создаётся ΠΈ пСрСдаётся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. Π’ любом случаС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ловится ΠΈ обрабатываСтся. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ благодаря самой систСмС, Π»ΠΈΠ±ΠΎ Π²Ρ‹ сами ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. БистСмныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании языка Java ΠΈΠ»ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‘ΠΌΠΎΠ² доступа ΠΊ систСмС. Π’Π°ΡˆΠΈ собствСнныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ спСцифичСскиС ошибки вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой (ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ) числа Π½Π΅ Π±Ρ€ΠΎΡΠ°ΡŽΡ‚ java.Π»Π΅Π½Π³.ArithmeticException: / ΠΏΠΎ Π½ΡƒΠ»ΡŽ Π² Java

ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ заявлСниС бросаСт java.lang.ArithmeticException: / by zero ΠΊΠ°ΠΊ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ΅.

ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½Ρ‹ΠΉ 0 считаСтся int прямом ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль Π½Π΅ допускаСтся Π² цСлочислСнной Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ΅.

ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ NaN (Π½Π΅ число) Π±Π΅Π· ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π² этом случаС ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ.

Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ заявлСния Π½Π΅ Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ любоС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

ΠΎΠ½ΠΈ производят ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄.

ΠΎΠ½ΠΈ всС вСрнутся false. ΠΏΠΎΡ‡Π΅ΠΌΡƒ эта опСрация (Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль) Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π° с числами с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ?

кстати, я ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой (числа с Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ) ΠΈΠΌΠ΅ΡŽΡ‚ свои значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ, ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ, Π½Π΅ ( NaN ).

6 ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²

ΠΊΠΎΡ€ΠΎΡ‡Π΅ говоря, Ρ‚Π°ΠΊ это ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² стандартС IEEE-754, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Java ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π‘ ΠŸΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Запятой основаны Π½Π°.

модСль 754 поощряСт Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Он ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для числСнных Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠ², Π½ΠΎ ΠΈ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ элСктронных Ρ‚Π°Π±Π»ΠΈΡ†, систСмы Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΊΠΎΡ„Π΅ΠΉΠ½ΠΈΠΊΠΈ. ΠŸΡ€Π°Π²ΠΈΠ»Π° распространСния для NaNs ΠΈ бСсконСчностСй ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΡ‡Π΅Π·Π°Ρ‚ΡŒ нСсущСствСнным ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌ. Аналогично, постСпСнный underflow ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ свойства ошибки Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ точности.

ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ситуациям Π½ΡƒΠΆΠ½ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π»ΠΎΠ²ΡƒΡˆΠΊΠΈ ΠΈΠ»ΠΈ Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ врСмя Ρ‡Π΅Ρ€Π΅Π· Ρ„Π»Π°Π³ΠΈ состояния. Π›ΠΎΠ²ΡƒΡˆΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для остановки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ нСустранимыС ситуации ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΈ. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ нСльзя опция для встроСнных систСм ΠΈΠ»ΠΈ сСтСвых Π°Π³Π΅Π½Ρ‚ΠΎΠ². Π§Π°Ρ‰Π΅ всСго Π»ΠΎΠ²ΡƒΡˆΠΊΠΈ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ допустимыС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

Ρ„Π»Π°Π³ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΊΠ°ΠΊ прСдсказуСмый ΠΏΠΎΡ‚ΠΎΠΊ управлСния, Ρ‚Π°ΠΊ ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ. Π˜Ρ… использованиС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ программист Π·Π½Π°Π» ΠΎΠ± ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… условиях, Π½ΠΎ Π»ΠΈΠΏΠΊΠΎΡΡ‚ΡŒ Ρ„Π»Π°Π³Π° позволяСт программистам ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… условий Π΄ΠΎ нСобходимости.

это Ρ‚Π°ΠΊ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ» Π΅Π³ΠΎ IEEE 754.

созданиС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС) INT создаСтся Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π° ноль Π½Π° x86 микропроцСссоры.

Π΄ΠΎ бСсконСчности ΠΈ дальшС

ΠΏΠΎΡ‡Π΅ΠΌΡƒ Java ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Double s для прСдставлСния дСсятичных Π΄Ρ€ΠΎΠ±Π΅ΠΉ. Π”Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ число, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΎΠΌ Java.

Π’Π°ΠΊΠΆΠ΅ см. Ρ€Π°Π·Π΄Π΅Π» : Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ЗначСния Π‘ ΠŸΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Запятой at ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ошибки Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ info:)

ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: INT Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ бСсконСчности ΠΈ NaN Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π½Π°Π±ΠΎΡ€Π΅, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ float ΠΈΠΌΠ΅Π΅Ρ‚ Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ NaN Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. (Богласно стандартам IEEE 754, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт java)

ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ прСдставлСниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² Π²ΠΈΠ΄Π΅ числа. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π΅ являСтся числом.

для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ not-a-number sentinel, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ 32-разрядныС (для float ) ΠΈ 64-Π±ΠΈΡ‚Π½Ρ‹Ρ… (для double ) Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ число ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ Π½Π΅-число ( NaN ).

для Ρ†Π΅Π»Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с использованиСм common Π΄Π²ΠΎΠΉΠΊΠΈ-схСма дополнСния (ΠΊΠ°ΠΊ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Java), всС 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ (для int ) ΠΈ 64-Π±ΠΈΡ‚Π½Ρ‹Ρ… (для long ) Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой количСство. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ sentinel. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ «Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°». Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅-это ΠΌΠ΅Ρ‚ΠΎΠ΄ out of band, Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ для Java.

Java слСдуСт стандарту IEEE 754, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт значСния, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² случаС дСлСния Π½Π° ноль. http://en.wikipedia.org/wiki/IEEE_754#Exception_handling

Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль (опСрация с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ бСсконСчный Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1/0 ΠΈΠ»ΠΈ log (0)) (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Β±infinity).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *