ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ»ΠΈ сопровоТдСнии ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 программисты часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с критичСскими ошибками выполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ систСмы. Одной ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹Ρ… ситуаций являСтся сообщСниС: Β«ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ‚ΠΈΠΏΠ° Π‘ΡƒΠ»Π΅Π²ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎΒ». Π­Ρ‚Π° ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° систСма пытаСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ логичСским Ρ‚ΠΈΠΏΠΎΠΌ (Π˜ΡΡ‚ΠΈΠ½Π°/Π›ΠΎΠΆΡŒ), ΠΊΠ°ΠΊ Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для использования Π² условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»Π°Ρ….

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

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

ΠŸΡ€ΠΈΡ€ΠΎΠ΄Π° ошибки ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π² 1Π‘

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ свой Ρ‚ΠΈΠΏ Π² процСссС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Однако ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ систСма Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ однозначности. Ошибка Β«ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ‚ΠΈΠΏΠ° Π‘ΡƒΠ»Π΅Π²ΠΎΒ» сигнализируСт ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰Π΅ΠΌ Π˜ΡΡ‚ΠΈΠ½Π° ΠΈΠ»ΠΈ Π›ΠΎΠΆΡŒ, оказалось Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π§Π°Ρ‰Π΅ всСго Π²ΠΈΠ½ΠΎΠ²Π½ΠΈΠΊΠΎΠΌ становится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НСопрСдСлСно (Null), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках программирования трактуСтся ΠΊΠ°ΠΊ Π›ΠΎΠΆΡŒ, Π½ΠΎ Π² 1Π‘ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ явной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

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

Π’Π°ΠΊΠΆΠ΅ ошибка ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ссылками, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π±Ρ‹Π»ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. Бтрогая типизация Π² соврСмСнных вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π΅ ΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ нСбрСТности Π² ΠΊΠΎΠ΄Π΅. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ явно Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ любоС условиС провСряСт ΠΈΠΌΠ΅Π½Π½ΠΎ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Π³Π°Ρ€Π°Π½Ρ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΈΠ»ΠΈ явноС сравнСниС.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ошибка ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² явных условиях Если, Π½ΠΎ ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ слоТных логичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π³Π΄Π΅ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΏΠΎΠ΄Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ нСдопустимый Ρ‚ΠΈΠΏ. ВсСгда провСряйтС ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ слагаСмоС Π² условии И ΠΈΠ»ΠΈ Π˜Π›Π˜.

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ останова Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ сбоя.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии возникновСния сбоя Π² ΠΊΠΎΠ΄Π΅

БущСствуСт нСсколько классичСских ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ приводят ΠΊ рассматриваСмой ошибкС. Π—Π½Π°Π½ΠΈΠ΅ этих сцСнариСв позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π²Π΅Π½Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄-Ρ€Π΅Π²ΡŒΡŽ ΠΈ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π° этапС написания ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π§Π°Ρ‰Π΅ всСго ошибка кроСтся Π² Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запросов ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ сцСнарий связан с ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹. НапримСр, ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Π΅ Π½Π΅ записан Π² Π±Π°Π·Ρƒ ΠΈΠ»ΠΈ Π±Ρ‹Π» создан ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π±Π΅Π· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ всСх ΠΏΠΎΠ»Π΅ΠΉ. Π’Ρ‚ΠΎΡ€ΠΎΠΉ сцСнарий β€” это Ρ€Π°Π±ΠΎΡ‚Π° с Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°ΠΌΠΈ запросов, Π³Π΄Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ NULL ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠΉΡΡ Π² НСопрСдСлСно Π² 1Π‘.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ частый случай β€” использованиС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ ΠΈΠ»ΠΈ Π²Π΅Π±-сСрвисов. Если внСшний сСрвис Π²Π΅Ρ€Π½ΡƒΠ» ΠΏΡƒΡΡ‚ΡƒΡŽ строку вмСсто ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ логичСского Ρ„Π»Π°Π³Π°, Π° ΠΊΠΎΠ΄ 1Π‘ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Ρ‚ΠΈΠΏΠΎΠ². НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΏΡ€ΠΈ нСявном ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ.

Π’ΠΈΠΏ значСния ΠŸΡ€ΠΈΠΌΠ΅Ρ€ значСния РСакция Π² условии Если Риск ошибки
Π‘ΡƒΠ»Π΅Π²ΠΎ Π˜ΡΡ‚ΠΈΠ½Π°, Π›ΠΎΠΆΡŒ ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° НСт
НСопрСдСлСно НСопрСдСлСно Π‘Π±ΠΎΠΉ выполнСния Высокий
Число 0, 1, 100 Π‘Π±ΠΎΠΉ выполнСния Высокий
Π‘Ρ‚Ρ€ΠΎΠΊΠ° "Π”Π°", "НСт", "" Π‘Π±ΠΎΠΉ выполнСния Высокий
Бсылка ΠŸΡƒΡΡ‚Π°Ρ ссылка Π‘Π±ΠΎΠΉ выполнСния Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ
πŸ“Š Π“Π΄Π΅ Π²Ρ‹ Ρ‡Π°Ρ‰Π΅ всСго встрСчаСтС эту ΠΎΡˆΠΈΠ±ΠΊΡƒ?
Π’ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ… провСдСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
Π’ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ… ΠΈ запросах
ΠŸΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с сайтами
Π’ рСгистрС свСдСний

Диагностика ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°

Для эффСктивного устранСния ошибки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ мСсто Π΅Ρ‘ возникновСния. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ прСдоставляСт ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнтарий для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт пошагово Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ состояниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом являСтся Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅ ΠΈΠ»ΠΈ запуск прСдприятия Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ (/debug).

Когда появляСтся ΠΎΠΊΠ½ΠΎ с сообщСниСм ΠΎΠ± ошибкС, критичСски Π²Π°ΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ. Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ отобраТаСтся стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² β€” ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΊ сбою. ВСрхняя строка стСка ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ Π½ΠΎΠΌΠ΅Ρ€ строки, Π³Π΄Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ этой строкС Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ позволяСт ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ участок ΠΊΠΎΠ΄Π°.

ПослС нахоТдСния строки ΠΊΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова (Breakpoint) нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ условия. ЗапуститС ΠΊΠΎΠ΄ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ Π΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ΡΡŒ остановки. Π’ ΠΎΠΊΠ½Π΅ Β«ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅Β» ΠΈΠ»ΠΈ «ВыраТСния» Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π΅Ρ‘ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΈΠΏ. Если Ρ‚ΠΈΠΏ отличаСтся ΠΎΡ‚ Π‘ΡƒΠ»Π΅Π²ΠΎ, Π²Ρ‹ нашли ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ.

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

Как Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²

Π‘Ρ‚Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² читаСтся свСрху Π²Π½ΠΈΠ·. Бамая вСрхняя строка β€” это мСсто, Π³Π΄Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Если). Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, какая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²Ρ‹Π·Π²Π°Π»Π° Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ. Часто ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π»Π΅ΠΆΠΈΡ‚ Π½Π΅ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ строкС, Π° Π² Ρ‚ΠΎΠΌ мСстС, Π³Π΄Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Ρ‹Π»ΠΎ присвоСно Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ исправлСния ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΊΠΎΠ΄Π°

ПослС выявлСния ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ внСсти ΠΏΡ€Π°Π²ΠΊΠΈ Π² ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Основной ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ исправлСния β€” явная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ значСния ΠΏΠ΅Ρ€Π΅Π΄ использованиСм Π² логичСском Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. Никогда Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ пСрСмСнная Β«Π΄ΠΎΠ»ΠΆΠ½Π°Β» Π±Ρ‹Ρ‚ΡŒ Π±ΡƒΠ»Π΅Π²ΠΎΠΉ.

Π‘Π°ΠΌΡ‹ΠΉ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ способ β€” использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ. Π­Ρ‚Π° встроСнная функция 1Π‘ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π°, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ являСтся НСопрСдСлСно, пустой строкой, Π½ΡƒΠ»Π΅ΠΌ ΠΈΠ»ΠΈ пустой ссылкой. Она бСзопасно ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π»ΡŽΠ±Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ наличия Π΄Π°Π½Π½Ρ‹Ρ….

Если ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Π±ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ Ρ„Π»Π°Π³Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ сравнСниС. НапримСр, вмСсто Если Π€Π»Π°Π³ Π’ΠΎΠ³Π΄Π° ΠΏΠΈΡˆΠΈΡ‚Π΅ Если Π€Π»Π°Π³ = Π˜ΡΡ‚ΠΈΠ½Π° Π’ΠΎΠ³Π΄Π°. Однако, Ссли Π€Π»Π°Π³ Ρ€Π°Π²Π΅Π½ НСопрСдСлСно, Ρ‚Π°ΠΊΠΎΠ΅ сравнСниС Π²Π΅Ρ€Π½Π΅Ρ‚ Π›ΠΎΠΆΡŒ, Ρ‡Ρ‚ΠΎ бСзопасно, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΊΠ°Π·ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ, Ссли НСопрСдСлСно Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ½Π°Ρ‡Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π»ΡƒΡ‡ΡˆΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ являСтся инициализация ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ ΠΈΡ… объявлСнии.

  • βœ… ВсСгда ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ логичСского Ρ‚ΠΈΠΏΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π›ΠΎΠΆΡŒ ΠΏΡ€ΠΈ объявлСнии.
  • βœ… Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π’ΠΈΠΏΠ—Π½Ρ‡() для строгой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅Π΄ логичСскими опСрациями.
  • βœ… ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ() для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΠΎΠ»Π΅ΠΉ запросов.
  • βœ… Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ИзмСнСниС ΠΊΠΎΠ΄Π° Π² Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… конфигурациях ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ дальнСйшСС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅. Если ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅, рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для пСрСопрСдСлСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€.

β˜‘οΈ Π§Π΅ΠΊ-лист бСзопасной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ значСниями

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с запросами ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°ΠΌΠΈ

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ внимания заслуТиваСт ситуация, ΠΊΠΎΠ³Π΄Π° ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запроса. Π’ языкС запросов 1Π‘ поля, Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ NULL, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ΄Π΅ 1Π‘ интСрпрСтируСтся ΠΊΠ°ΠΊ НСопрСдСлСно. Если Π² тСкстС запроса Π²Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ„Π»Π°Π³, Π½ΠΎ Π² Π±Π°Π·Π΅ ΠΎΠ½ΠΎ пустоС, прямоС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΌΡƒ Π² Ρ†ΠΈΠΊΠ»Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ сбой.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ запроса рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π•Π‘Π’Π¬NULL. Он позволяСт ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL Π½Π° Π½ΡƒΠΆΠ½ΠΎΠ΅ Π²Π°ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ прямо Π² тСкстС запроса. Π­Ρ‚ΠΎ снимаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ ΡƒΠΆΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ построСния запроса:

ВЫБРАВЬ

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Бсылка,

Π•Π‘Π’Π¬NULL(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ, Π›ΠžΠ–Π¬) КАК ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ

Π˜Π—

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π—Π°ΠΊΠ°Π·ΠšΠ»ΠΈΠ΅Π½Ρ‚Π° КАК Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π΄Π°ΠΆΠ΅ Ссли ΠΏΠΎΠ»Π΅ ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ Π² Π±Π°Π·Π΅ пустоС, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π›ΠžΠ–Π¬. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ бСзопасно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ Π² Ρ†ΠΈΠΊΠ»Π΅ Для КаТдого Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π½Π° Ρ‚ΠΈΠΏ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°.

πŸ’‘

ИспользованиС Π•Π‘Π’Π¬NULL Π² запросах β€” Π»ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° для прСдотвращСния ошибок Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΎΡ„ΠΈΠ»Π°ΠΊΡ‚ΠΈΠΊΠ° ошибок ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹

Π‘ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Π½ΠΎΠ²Ρ‹Ρ… вСрсий ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ выполнСния ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ строгим. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π² старых вСрсиях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, нСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ чисСл ΠΊ Π±ΡƒΠ»Π΅Π²ΠΎ), Π² Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π»ΠΈΠ·Π°Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. РСгулярноС тСстированиС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ мСста Π·Π°Ρ€Π°Π½Π΅Π΅.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ слСдуСт ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° измСнСниями Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ рСкомСндациями Ρ„ΠΈΡ€ΠΌΡ‹ Β«1Π‘Β». Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ статичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· инструмСнты SonarQube ΠΈΠ»ΠΈ спСциализированныС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° 1Π‘) позволяСт Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасныС участки Π΄ΠΎ запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. АвтоматичСская ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… β€” ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт ΠΏΡ€ΠΎΡ„ΠΈΠ»Π°ΠΊΡ‚ΠΈΠΊΠΈ.

Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ старого ΠΊΠΎΠ΄Π°. Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ конструкции, Π³Π΄Π΅ пСрСмСнная ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±Π΅Π· явной ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ²Π΅Π΄ΠΈΡ‚Π΅ ΠΈΡ… ΠΊ соврСмСнному стандарту. Π­Ρ‚ΠΎ снизит тСхничСский Π΄ΠΎΠ»Π³ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ появлСния ошибок Β«ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ Π±ΡƒΠ»Π΅Π²ΠΎΒ» Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ.

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

FAQ: Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…, Π° Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ связано с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ вСрсиями ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘, установлСнными Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Ρ… вСрсиях Π΄Π²ΠΈΠΆΠΎΠΊ выполнСния строТС провСряСт Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€Π°Π²Π°Ρ… доступа ΠΈΠ»ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ Ρƒ всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

МоТно Π»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ² Π² настройках 1Π‘?

НСт, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π² логичСских опСрациях являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Π½Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ настройками. ЕдинствСнный способ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибки β€” ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….

Как быстро Π½Π°ΠΉΡ‚ΠΈ всС мСста Π² ΠΊΠΎΠ΄Π΅, Π³Π΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° эта ошибка?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ «Анализ ΠΊΠΎΠ΄Π°Β» ΠΈΠ»ΠΈ внСшниС инструмСнты статичСского Π°Π½Π°Π»ΠΈΠ·Π°. Π˜Ρ‰ΠΈΡ‚Π΅ всС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Если, Π² условиях ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π½Π΅ ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΠ΅ ΡΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

ВлияСт Π»ΠΈ эта ошибка Π½Π° Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π°Π·Π΅?

Π‘Π°ΠΌΠ° ΠΏΠΎ сСбС ошибка выполнСния ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, поэтому Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Π΅ измСнСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ. Однако, Ссли ошибка происходит Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ слоТной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ записи, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° администратора.