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

JavaScript try…catch β€” Π’Π΅ΠΌΡ‹ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ

ΠžΠ±Π·ΠΎΡ€

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±Π»ΠΎΠΊ try…catch Π² JavaScript?

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try catch Π² javascript ΠΎΡ‡Π΅Π½ΡŒ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языках программирования. Π­Ρ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для управлСния ΠΈ манипулирования Ρ‚ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ошибки. Try-catch Π² javascript сначала провСряСт всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ΄Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ try-catch Π² javascript выполняСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ дСйствия для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ этих ошибок (Ссли ΠΎΠ½ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚). ΠœΡ‹ всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ слоТный ΠΊΠΎΠ΄ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ try-catch. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ catch Π² javascript ΠΈΠ΄ΡƒΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ обсудим try catch Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅ инструкциях javascript.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Try{}

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try{} Π² try catch Π² javascript ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если Π² этом ΠΊΠΎΠ΄Π΅ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ошибки, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try{} ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΈΡ… Π² Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² catch{}. ПослС этого Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ дСйствия.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Catch{}

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ try catch Π² javascript. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try-catch ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Ρ‚ ΠΏΠ°Ρ€ΠΎΠΉ. Π‘Π»ΠΎΠΊ try catch Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ javascript ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ состоит ΠΈΠ· Π±Π»ΠΎΠΊΠ° try ΠΈ Π±Π»ΠΎΠΊΠ° catch, Π° послСдний Π±Π»ΠΎΠΊ являСтся ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ ΠΈΠ»ΠΈ ΠΎΠ±ΠΎΠΈΠΌΠΈ ΠΈΠ· Π½ΠΈΡ….

Π‘Π½Π°Ρ‡Π°Π»Π° выполняСтся Π±Π»ΠΎΠΊ try, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡ‰Π΅Ρ‚ Π»ΡŽΠ±ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Π΄Π°Π½Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π°, ΠΈ это Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ПослС этого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ catch выполняСтся для любой ошибки, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ Π² Π±Π»ΠΎΠΊΠ΅ try. Если Π² Π±Π»ΠΎΠΊΠ΅ try Π½Π΅Ρ‚ ошибок, Ρ‚ΠΎ Π±Π»ΠΎΠΊ catch игнорируСтся. И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, наступаСт послСдний Π±Π»ΠΎΠΊ. Π­Ρ‚ΠΎΡ‚ Π±Π»ΠΎΠΊ выполняСтся Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° синтаксис try catch Π² javascript.

ОписаниС

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try β€” это ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ catch β€” это Ρ‚ΠΎΡ‚ Π±Π»ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся, Ссли Π² Π±Π»ΠΎΠΊΠ΅ try Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ try catch Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ javascript Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. ΠŸΠΎΡ‚ΠΎΠΊ try catch Π² javascript всСгда начинаСтся с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° try. ПослС этого ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Π±Π»ΠΎΠΊΡƒ catch. ВмСстС ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Ρ…Π²Π°Ρ‚ ΠΈ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ. Π­Ρ‚ΠΎ даст Π½Π°ΠΌ Ρ‚Ρ€ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° try, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:0005

  • ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒβ€¦ ΠΏΠΎΠΉΠΌΠ°Ρ‚ΡŒ
  • ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒβ€¦ Π½Π°ΠΊΠΎΠ½Π΅Ρ†
  • ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒβ€¦ ΠΏΠΎΠΉΠΌΠ°Ρ‚ΡŒβ€¦ Π½Π°ΠΊΠΎΠ½Π΅Ρ†

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ try catch Π² javascript всСгда Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π­Ρ‚ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ², ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ конструкции, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ for, or ΠΈ Ρ‚. Π΄.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try…catch Π² javascript состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ… Π±Π»ΠΎΠΊΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Π­Ρ‚ΠΈ Π±Π»ΠΎΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΎΠΌ try ΠΈ Π±Π»ΠΎΠΊΠΎΠΌ catch, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ catch вмСстС с Π±Π»ΠΎΠΊΠ°ΠΌΠΈ try ΠΈ catch. Π‘Π½Π°Ρ‡Π°Π»Π° выполняСтся ΠΊΠΎΠ΄ Π±Π»ΠΎΠΊΠ° try, Π° Π·Π°Ρ‚Π΅ΠΌ выполняСтся ΠΊΠΎΠ΄ Π±Π»ΠΎΠΊΠ° catch, Ссли ΠΊΠΎΠ΄ Π±Π»ΠΎΠΊΠ° try Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΊ управлСния ΠΏΠΎΠΊΠΈΠ½Π΅Ρ‚ всю ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, всСгда запускаСтся функция послСднСго ΠΊΠ°Π΄Ρ€Π°.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ошибки

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ошибки Π² javascript β€” это встроСнная функция, которая прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ошибкС, Ссли Π² ΠΊΠΎΠ΄Π΅ присутствуСт какая-Π»ΠΈΠ±ΠΎ ошибка. Π£ этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ошибки Π΅ΡΡ‚ΡŒ Π΄Π²Π° свойства: name

ΠΈ message .

  • Имя : Π­Ρ‚ΠΎ свойство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для установки ΠΈΠΌΠ΅Π½ΠΈ ошибки ΠΈΠ»ΠΈ для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈΠΌΠ΅Π½ΠΈ ошибки.
  • Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ : Π­Ρ‚ΠΎ свойство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для установки сообщСния ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° сообщСния ΠΎΠ± ошибкС. Π­Ρ‚ΠΎ сообщСниС Π±ΡƒΠ΄Π΅Ρ‚ строковым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ привязка Β«CatchΒ»

ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ привязка catch β€” это функция Π² javascript, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ошибки. Π­Ρ‚Π° функция Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​в javascript Π² ES10/2019. Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ try…catch, Ссли присутствуСт какая-Π»ΠΈΠ±ΠΎ ошибка, ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ манипуляции с этой ошибкой, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ привязку catch. Бинтаксис для Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ привязки catch ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

АргумСнт ошибки содСрТит ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ возникновСния ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅. ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ привязка catch ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ситуации, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ Π½Π°ΠΌ Π½Π΅ интСрСсно Π·Π½Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ошибки. Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся Π² этом Π½Π° простом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Π’Ρ‹Ρ…ΠΎΠ΄ :

ОбъяснСниС : Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ строку abcd. Π­Ρ‚Π° строка анализируСтся ΠΊΠ°ΠΊ JSON с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° JSON.parse. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ошибка. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ данная строка Π½Π΅ являСтся допустимой строкой JSON. ПослС этого Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ошибки пропускаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ привязки catch Π² Π±Π»ΠΎΠΊΠ΅ catch ΠΊΠΎΠ΄Π°.

ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ошибок JavaScript ΠΏΠΎ ΡˆΠ΅ΡΡ‚ΠΈ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌ

Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π² javascript β€” ΠΎΡ‡Π΅Π½ΡŒ ваТная функция javascript, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для управлСния всСми Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ ошибками, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅. И ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° исправляСт эти ошибки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π²Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΊΠΎΠ΄Π°.

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ опрСдСляСтся ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит объяснСниС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ происходит Π² ΠΊΠΎΠ΄Π΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ опрСдСляСт, Π³Π΄Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка Π² javascript. Ошибки Π² javascript ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΈΠ·-Π·Π° ошибок, Π΄ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… ΠΊΠ΅ΠΌ-Π»ΠΈΠ±ΠΎ ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Π²Π²ΠΎΠ΄ΠΎΠ² ΠΈ Ρ‚.Π΄.

Π•ΡΡ‚ΡŒ нСсколько ΠΏΡ€ΠΈΡ‡ΠΈΠ½ возникновСния ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½ΠΈΠΆΠ΅:

  • Если число дСлится Π½Π° ноль. Π­Ρ‚ΠΎ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ бСсконСчному ΠΎΡ‚Π²Π΅Ρ‚Ρƒ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.
  • Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ», Π° этот Ρ„Π°ΠΉΠ» отсутствуСт Π² систСмС.
  • Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Π²ΠΎΠ΄.
  • Если ΠΌΠ΅ΠΆΠ΄Ρƒ сСансами связи ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» Ρ€Π°Π·Ρ€Ρ‹Π² сСти.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ обсудим Ρ‚ΠΈΠΏΡ‹ ошибок Π² javascript.

EvalError

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

Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Ошибка.

RangeError

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ RangeError Π² javascript ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° прСдоставлСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π½Π°Π±ΠΎΡ€ допустимых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π²Π²ΠΎΠ΄Π°, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ RangeError. НапримСр, всС Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰Π΅ΠΉ сантимСтры Π² Π΄ΡŽΠΉΠΌΡ‹. Π’ этом случаС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π½Π° ошибка RangeError, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ†Π΅Π»ΠΎΠ΅ число -100 находится Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ допустимого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π²Π²ΠΎΠ΄Π°.

ReferenceError

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ReferenceError Π² javascript прСдставляСт собой ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π²Ρ‹Π·Π²Π°Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈ ΠΎΠ½Π° Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠΎΠ΄Π°.

синтаксичСская ошибка

БинтаксичСская ошибка β€” это Ρ‚ΠΈΠΏ ошибки Π² javascript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ синтаксис. БинтаксичСскиС ошибки ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π²ΠΎ врСмя компиляции ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π²ΠΎ врСмя Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΊΠΎΠ΄Π°.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ‹ опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² javascript ΠΈ Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки {} Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

TypeError

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ TypeError прСдставляСт ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² javascript, Ссли опСрация Π½Π΅ выполняСтся Π² ΠΊΠΎΠ΄Π΅. Π­Ρ‚ΠΈ сбои ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ происходят, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Ρ‚ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ оТидался. TypeError ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ:

  • Когда ΠΌΡ‹ пытаСмся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ статичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
  • Когда ΠΌΡ‹ пытаСмся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

URI (ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ рСсурса) Ошибка

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ URIError Π² javascript прСдставляСт ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли функция URI ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ЛогичСский (абстрактный) ΠΈΠ»ΠΈ физичСский рСсурс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ

Π£Π½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ рСсурса (URI), строка символов, которая ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ связана с Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ΠΎΠΌ. Один рСсурс отдСляСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ URI.

Ошибки Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°

БинтаксичСскиС ошибки Π² javascript Ρ‚Π°ΠΊΠΆΠ΅ извСстны ΠΊΠ°ΠΊ ошибка Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ»ΠΈ ошибка синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°. Π­Ρ‚Π° ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π²ΠΎ врСмя ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π² javascript, которая отличаСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… языках эта ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π²ΠΎ врСмя компиляции.

Ошибка Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° β€” это Ρ‚ΠΈΠΏ ошибки Π² javascript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ синтаксис. БинтаксичСскиС ошибки ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π²ΠΎ врСмя компиляции ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π²ΠΎ врСмя Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΊΠΎΠ΄Π°. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ‹ опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² javascript ΠΈ Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки {} Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π·Π±ΠΎΡ€Π°.

Ошибка ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°

Как ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try…catch ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для указания Π½Π° любоС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ javascript. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Rethrow Error ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π±Π»ΠΎΠΊ catch Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΠΎΠΉΠΌΠ°Π½Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ try.

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ броска заставляСт исходный Π±Ρ€ΠΎΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ снова Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. НапримСр

Unconditional Catch-block

Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ try catch Π² javascript, Ссли присутствуСт Π±Π»ΠΎΠΊ catch, Π±Π»ΠΎΠΊ catch выполняСтся, Ссли Π² Π±Π»ΠΎΠΊΠ΅ try ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. НапримСр, Ссли Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ присутствуСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ пСрСносится Π² Π±Π»ΠΎΠΊ catch.

Π‘Π»ΠΎΠΊ catch прСдставляСт спСцификатор, содСрТащий Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° catch.

Π‘Π»ΠΎΠΊΠΈ условного Π·Π°Ρ…Π²Π°Ρ‚Π°

Условный Π±Π»ΠΎΠΊ catch ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π±Π»ΠΎΠΊ try…catch с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ if…else if…else. НапримСр:

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Когда Π² Π±Π»ΠΎΠΊΠ΅ try присутствуСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, exception_var сохраняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅). ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΆΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± этом ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ. Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ присутствуСт Π² области дСйствия Π±Π»ΠΎΠΊΠ° catch. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ссли Π΅ΠΌΡƒ это большС Π½Π΅ трСбуСтся. Бинтаксис ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

Π‘Π»ΠΎΠΊ finally

Π‘Π»ΠΎΠΊ finally β€” это Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, состоящий ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ послС Π±Π»ΠΎΠΊΠ° try ΠΈ Π±Π»ΠΎΠΊΠ° catch. Но эти ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Π±Π»ΠΎΠΊΠ° try…catch…finally.

Π‘Π»ΠΎΠΊ-схСма, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° try…catch…finally выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ

  • ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π±Π»ΠΎΠΊΠ° try (Π² ΠΊΠΎΠ΄Π΅ Π½Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ).
  • НСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π±Π»ΠΎΠΊΠ° catch Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.
  • НСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ инструкций ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния ( break, continue, return, continue ) Π² Π±Π»ΠΎΠΊΠ΅ try and catch.

Если Π² Π±Π»ΠΎΠΊΠ΅ try присутствуСт ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ Π½Π΅Ρ‚ нСобходимости Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±Π»ΠΎΠΊ catch для исправлСния ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ошибки Π² Π±Π»ΠΎΠΊΠ΅ try, Π±Π»ΠΎΠΊ finally всС Ρ€Π°Π²Π½ΠΎ выполняСтся.

ΠœΠ΅Ρ‚ΠΎΠ΄ onerror()

onerror β€” это ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий Π² javascript. Π­Ρ‚ΠΎ Π±Ρ‹Π»Π° ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок Π² javascript. Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ ошибки запускаСтся Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ ΠΎΠΊΠ½Π°, ΠΊΠΎΠ³Π΄Π° Π½Π° этой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π²Π΅Π±-страницС появляСтся ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ это.

ОбъяснСниС : Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π²Π΅Π±-страницу. Π’ Ρ‚Π΅Π³Π΅ script ΠΌΡ‹ создали событиС onerror ΠΈ присвоили Π΅ΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая создаст ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΈ появится сообщСниС Ρ‚ΠΈΠΏΠ° Β«ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка».

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ onerror прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Ρ‚Ρ€Π΅Ρ… частях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС

Π­Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ сообщСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ Π² случаС возникновСния ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ошибки.

URL-адрСс

Π­Ρ‚ΠΎ Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка

НомСр строки

НомСр строки указываСтся Π² URL-адрСсС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка.

Global Catch

ЗапускаСтся Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ошибок catch, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π’Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½Π½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ try

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ try ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π±Π»ΠΎΠΊΠΈ try Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° try. Но Π² javascript Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. Но Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ try Π² javascript становится Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ этого Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ try, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ catch для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² try. Но Π΄Π΅Π»Π°Ρ‚ΡŒ это Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ catch для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° try. НапримСр:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° try catch Π² javascript, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΅Π³ΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ JavaScript try…catch для отобраТСния нСобъявлСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π’Ρ‹Ρ…ΠΎΠ΄ :

ОбъяснСниС : Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ num ΠΈ deno. ПослС этого ΠΌΡ‹ присвоили этим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π°Π²Π½ΠΎΠ΅ 50, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ num ΠΈ x ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ deno. Π­Ρ‚Π° пСрСмСнная Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π­Ρ‚Π° ошибка фиксируСтся Π² Π±Π»ΠΎΠΊΠ΅ catch.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ JavaScript try…catch…finally

Π’Ρ‹Π²ΠΎΠ΄ :

ОбъяснСниС : Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ num ΠΈ deno. ПослС этого ΠΌΡ‹ присвоили этим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π°Π²Π½ΠΎΠ΅ 50, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ num ΠΈ x ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ deno. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка, ΠΈ эта ошибка пСрСхватываСтся Π±Π»ΠΎΠΊΠΎΠΌ catch. ПослСдний Π±Π»ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² любой ситуации. (Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΈΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка). Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ catch ΠΈΠ»ΠΈ finally послС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° try. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ Uncaught SyntaxError: Missing catch ΠΈΠ»ΠΈ finally after try.

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

  • Ѐункция try catch Π² javascript ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния ΠΈ манипулирования Ρ‚Π΅ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ошибки. Ѐункция try-catch Π² javascript сначала провСряСт всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ΄Π΅.
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try{} Π² try-catch Π² javascript ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ catch{} ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСтся, ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠΎΠ΄Π΅, тСстируСмом ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ try{}, Π΅ΡΡ‚ΡŒ какая-Π»ΠΈΠ±ΠΎ ошибка.
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ошибки Π² javascript β€” это встроСнная функция, которая прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ошибкС, Ссли Π² ΠΊΠΎΠ΄Π΅ присутствуСт какая-Π»ΠΈΠ±ΠΎ ошибка.
  • ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ привязка catch β€” это функция Π² javascript, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ошибки. Π­Ρ‚Π° функция Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​в javascript Π² ES10/2019, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ссли присутствуСт какая-Π»ΠΈΠ±ΠΎ ошибка, ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ манипуляции с этой ошибкой.
  • Ошибки JavaScript дСлятся Π½Π° ΡˆΠ΅ΡΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏ: ошибки EvalError, RangeError, ReferenceError, SyntaxError, TypeError ΠΈ URI (ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ рСсурса).
  • Π‘Π»ΠΎΠΊ finally β€” это Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, состоящий ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ послС Π±Π»ΠΎΠΊΠ° try ΠΈ Π±Π»ΠΎΠΊΠ° catch.
  • onerror β€” это ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий Π² javascript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСтся для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΠΊΠ½Π°, ΠΊΠΎΠ³Π΄Π° Π½Π° этой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π²Π΅Π±-страницС появляСтся ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ onerror прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Ρ‚Ρ€Π΅Ρ… частях: сообщСниС ΠΎΠ± ошибкС, URL-адрСс ΠΈ Π½ΠΎΠΌΠ΅Ρ€ строки.

Javascript Try Catch: всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ

Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€-программист EPAM Anywhere I, Π ΡƒΡ„Π°Ρ‚ Π₯асларов, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Ρ‚ вас ΠΏΠΎ JavaScript try catch Π² этом ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅ кодирования с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ.

Допускали Π»ΠΈ Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² своСм ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΡ‚ΠΎΠΌ нСльзя Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ? Или Π²Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ запрос Π½Π° сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π» сбой ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π» ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ послСдствиям? ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρƒ вас Π΅ΡΡ‚ΡŒ β€” ΠΊΠ°ΠΊ ΠΈ Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΈΠ· нас.

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

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ эти ошибки Π² JavaScript, ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ try/catch. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ!

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript try catch

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, try/catch Π² JavaScript выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘Π»ΠΎΠΊ try содСрТит Π½Π°Π±ΠΎΡ€ инструкций, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΈ всСгда сопровоТдаСтся Π±Π»ΠΎΠΊΠΎΠΌ catch, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰Π΅Π΅ Π² связанном Π±Π»ΠΎΠΊΠ΅ try. Π‘Π»ΠΎΠΊ catch Β«ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚Β» ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π½Π΅ΠΉ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ² свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ошибки.

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ конструкции try/catch Π² этом контСкстС Ρ‚Π°ΠΊΠΆΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«throwΒ». ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ Π΅Π³ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС настраиваСмыС ошибки. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΌΠΈ, понятными ΠΈ, я Π±Ρ‹ сказал, ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌΠΈ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΌΠ½Π΅ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ, β€” это ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…:

Π’ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ пытаСмся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ ΠΈΠ· свойства запроса запроса. Если Ρ‚ΠΎΠΊΠ΅Π½Π° Π½Π΅Ρ‚ ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пустоС, ΠΌΡ‹ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Β«ΠΊΠΈΠ΄Π°Π΅ΠΌΒ» ΠΎΡˆΠΈΠ±ΠΊΡƒ, которая пСрСхватываСтся Π±Π»ΠΎΠΊΠΎΠΌ catch ΠΈ отобраТаСтся Π² Π»ΠΎΠ³Π°Ρ…. НашС исслСдованиС Π½Π΅ останавливаСтся Π½Π° достигнутом.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Error β€” это класс, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ для ясности ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнныС классы ошибок. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ это:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали наш собствСнный класс ValidationError ΠΈ использовали Π΅Π³ΠΎ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ Π²Ρ‹ΡˆΠ΅. Π’ Π»ΠΎΠ³Π°Ρ… ΠΏΠΈΡˆΠ΅Ρ‚ «НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ValidationError. НС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ [Ρ‚ΠΎΠΊΠ΅Π½]Β». ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ этот ΠΌΠ΅Ρ‚ΠΎΠ΄, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ошибки ΠΈ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π΅Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ:

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ созданиС ошибки

ПослСдний ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я здСсь упомяну, β€” повторная Π²Ρ‹Π΄Π°Ρ‡Π° ошибки. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ этапС, Π° Π½Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

БущСствуСт стандарт Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ, согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ошибок (ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ catch) Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с Π½ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ слСдуСт ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ дальшС. Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ошибок ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС, Ρ‡Ρ‚ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½ΠΎ нашими Π³Π΅ΠΉΡ‚ΠΊΠΈΠΏΠ΅Ρ€Π°ΠΌΠΈ (Π±Π»ΠΎΠΊΠΈ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π°):

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠΌ наш ΠΊΠΎΠ΄. Код ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π»ΡƒΡ‡ΡˆΠ΅ вынСсти Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для удобства чтСния:

ИспользованиС блока finally

Иногда Π² случаях ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ/ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° ΠΈ успСха/Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅Π΅ ΠΈ нСзависимоС дСйствиС. Основной Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ: ΠΊΠΎΠ΄ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ дСскриптор; Ρ‡ΠΈΡ‚Π°Π΅Ρ‚/ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ; ΠΈ, Π² случаС ошибки ΠΈΠ»ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚, Π° рСсурсы освобоТдСны.

Для этой Ρ†Π΅Π»ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ try/catch/finally Π² JavaScript:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ вСсь Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΉ ΠΊΠΎΠ΄ являСтся синхронным. Π’ соврСмСнном JavaScript (ES2017 ΠΈ Π½ΠΎΠ²Π΅Π΅) try/catch/finally ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с асинхронными функциями. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см. Π² этом руководствС.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ функция Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ асинхронная:

Π˜Ρ‚Π°ΠΊ, Ссли ΠΎΠ±Π΅Ρ‰Π°Π½ΠΈΠ΅ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΎ, Π±Π»ΠΎΠΊ catch ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΅Π³ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅.