Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8 рСгулярно ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с нСприятной ситуациСй, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° прСрываСтся критичСским сообщСниСм. Π§Π°Ρ‰Π΅ всСго это происходит Π½Π° этапС компиляции ΠΈΠ»ΠΈ исполнСния модуля Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠΎΠ³Π΄Π° систСма заявляСт, Ρ‡Ρ‚ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ элСмСнт Π½Π΅ сущСствуСт. Ошибка "ИндСкс находится Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ массива" являСтся классичСской ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ доступа ΠΊ памяти ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ…. Она сигнализируСт ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пытаСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ячСйкС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ физичСски Π½Π΅Ρ‚ Π² Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅.

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

ΠŸΡ€ΠΈΡ€ΠΎΠ΄Π° возникновСния ошибки Π² ΠΊΠΎΠ΄Π΅ 1Π‘

Π‘ тСхничСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, массив Π² языкС встроСнного программирования прСдставляСт собой ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ элСмСнтов. НумСрация Π² 1Π‘, ΠΊΠ°ΠΊ ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, начинаСтся с нуля. Если Π²Ρ‹ создали массив ΠΈΠ· пяти элСмСнтов, Ρ‚ΠΎ доступныС индСксы Π±ΡƒΠ΄ΡƒΡ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ 0 Π΄ΠΎ 4. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ индСксу 5 Π½Π΅ΠΌΠΈΠ½ΡƒΠ΅ΠΌΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ нСльзя Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ.

Часто ошибка скрываСтся Π² Ρ†ΠΈΠΊΠ»Π°Ρ…, Π³Π΄Π΅ счСтчик Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ рассчитываСтся. НапримСр, ΠΏΡ€ΠΈ использовании конструкции Для i = 0 По Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() Π¦ΠΈΠΊΠ» программист ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΊ индСксу Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π° послСднСй ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄ обращаСтся ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ элСмСнту. Π’Π°ΠΊΠΈΠ΅ Π±Π°Π³ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΡ‚Π»ΠΎΠ²ΠΈΡ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ, Ссли объСм Π΄Π°Π½Π½Ρ‹Ρ… Π² массивС постоянно мСняСтся.

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ слСдуСт ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ динамичСским структурам. Π’ соврСмСнных конфигурациях, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ 1Π‘:БухгалтСрия прСдприятия ΠΈΠ»ΠΈ 1Π‘:Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»Π΅ΠΉ, Π΄Π°Π½Π½Ρ‹Π΅ часто ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром Π² Π²ΠΈΠ΄Π΅ сСриализованных массивов. Если Π½Π° сторонС сСрвСра массив Π±Ρ‹Π» усСчСн Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠΌ, Π° клиСнтский ΠΊΠΎΠ΄ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ объСм Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚. ДСсСриализация Π² этом случаС ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π½ΠΎ доступ ΠΊ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ полям Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ сбой.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ управляСмых Ρ„ΠΎΡ€ΠΌΠ°Ρ… ошибка ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² явном ΠΊΠΎΠ΄Π΅, Π½ΠΎ ΠΈ Π² скрытых ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий. НапримСр, ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состава ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ динамичСского списка систСма ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡƒ элСмСнту ΠΏΠΎ старому индСксу.

πŸ’‘

ВсСгда провСряйтС свойство ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() ΠΈΠ»ΠΈ Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() массива ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ, особСнно Ссли массив ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ сторонним ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌΠΈ.

Диагностика ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΡ

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ сбоя являСтся Π°Π½Π°Π»ΠΈΠ· ΠΆΡƒΡ€Π½Π°Π»Π° рСгистрации. Однако, для ошибки Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива ΠΆΡƒΡ€Π½Π°Π» часто Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ°Π»ΠΎΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ происходит Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°. Π“ΠΎΡ€Π°Π·Π΄ΠΎ эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. ЗапуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ (ΠžΡ‚Π»Π°Π΄ΠΊΠ°) ΠΈ воспроизвСдитС дСйствиС, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Когда систСма остановится Π½Π° строкС с ошибкой, Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» сбой. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΈΠ»ΠΈ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ остановки. Часто Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ индСкс Ρ€Π°Π²Π΅Π½ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, Π½ΠΎ сам массив пуст ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ мСньшС ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ.

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

  • πŸ” Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΡƒ останова ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ состояния ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
  • πŸ›  ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅, Ссли ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ взаимодСйствии с элСмСнтами Ρ„ΠΎΡ€ΠΌΡ‹.
  • πŸ“Š Π›ΠΎΠ³ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ массивов Π΄ΠΎ ΠΈ послС слоТных вычислСний ΠΈΠ»ΠΈ запросов ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….
πŸ“Š Π“Π΄Π΅ Ρ‡Π°Ρ‰Π΅ всСго Π²Ρ‹ встрСчаСтС эту ΠΎΡˆΠΈΠ±ΠΊΡƒ?
Π’ Ρ†ΠΈΠΊΠ»Π°Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… частСй
ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с динамичСскими списками
Π’ запросах с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ
ΠŸΡ€ΠΈ сСриализации Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Ошибки Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ частями

Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ части Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ справочников ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ сути массивами строк. Π Π°Π±ΠΎΡ‚Π° с Π½ΠΈΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ β€” распространСнная ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, особСнно Π² старых Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Ошибка "ИндСкс находится Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ массива" здСсь Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° программист пытаСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ строкС, которая Π±Ρ‹Π»Π° ΡƒΠ΄Π°Π»Π΅Π½Π° ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π°. НапримСр, послС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π’Π°Π±Π»ΠΈΡ‡Π½Π°ΡΠ§Π°ΡΡ‚ΡŒ.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ() индСксы ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… строк ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ.

Рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ сцСнарий: Π²Ρ‹ цикличСски ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ строкам Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ части ΠΈ удаляСтС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ прямой Ρ†ΠΈΠΊΠ» (ΠžΡ‚ 0 Π”ΠΎ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ-1), Ρ‚ΠΎ послС удалСния строки с индСксом i, Π±Ρ‹Π²ΡˆΠ°Ρ строка i+1 станСт строкой i. Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ Ρ†ΠΈΠΊΠ»Π° увСличится, ΠΈ Π²Ρ‹ пропуститС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΎΠ΄Π½ΠΎΠΉ строки, Π° Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΉΡ‚ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива.

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


// ΠŸΡ€ΠΈΠΌΠ΅Ρ€ бСзопасного удалСния Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»

Для i = Π’Π°Π±Π»ΠΈΡ‡Π½Π°ΡΠ§Π°ΡΡ‚ΡŒ.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1 По 0 Π¦ΠΈΠΊΠ»

Если Π’Π°Π±Π»ΠΈΡ‡Π½Π°ΡΠ§Π°ΡΡ‚ΡŒ[i].ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ = 0 Π’ΠΎΠ³Π΄Π°

Π’Π°Π±Π»ΠΈΡ‡Π½Π°ΡΠ§Π°ΡΡ‚ΡŒ.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(i);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ измСняйтС состав Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ части (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ строк) Π²ΠΎ врСмя прямого ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΏΠΎ индСксам. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡŽ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈΠ»ΠΈ ошибкС Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹.

β˜‘οΈ БСзопасная Ρ€Π°Π±ΠΎΡ‚Π° с Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ частями

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

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ДинамичСскими списками ΠΈ Π€ΠΎΡ€ΠΌΠ°ΠΌΠΈ

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

Если ΠΊΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΡ‹ пытаСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ строкС ΠΏΠΎ индСксу, сохранСнному Π΄ΠΎ примСнСния Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка. БистСма Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ элСмСнт с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ порядковым Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΌ спискС, Π³Π΄Π΅ этот Π½ΠΎΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌ. ОсобСнно часто это встрСчаСтся ΠΏΡ€ΠΈ использовании ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ инструмСнтов, привязанных ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строкС списка.

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

Битуация ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° ошибки ΠœΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ строки Π² Ρ†ΠΈΠΊΠ»Π΅ Π‘Π΄Π²ΠΈΠ³ индСксов ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ элСмСнтов Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»
ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ строки ИзмСнСниС состава списка Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠΌ Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ строку Π·Π°Π½ΠΎΠ²ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ
Доступ ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ запроса ΠŸΡƒΡΡ‚ΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° количСство > 0
БСриализация Π΄Π°Π½Π½Ρ‹Ρ… НСсоотвСтствиС структуры Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΈ сСрвСрС Валидация структуры ΠΏΠ΅Ρ€Π΅Π΄ доступом
ΠΡŽΠ°Π½ΡΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π’Ρ‹Π±ΠΎΡ€ΠΊΠΎΠΉ ΠΈΠ· запроса

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° Ρ‚ΠΎΠΆΠ΅ Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΊΠ°ΠΊ массив, Π½ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ индСксации ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ. Ошибка "индСкс Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ" Π² запросах Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ запроса, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ ΠΊ массиву, Ссли Ρ†ΠΈΠΊΠ» ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π΅Π²Π΅Ρ€Π½ΠΎ.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Запросами ΠΈ Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ

Π₯отя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ запроса Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ массивы для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ИмСнно Π½Π° этапС пСрСноса Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ риск ошибки. Если запрос Π½Π΅ Π²Π΅Ρ€Π½ΡƒΠ» Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ строки, Π° ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±Π΅Ρ€Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²), систСма выдаст ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Частой ошибкой являСтся ТСсткая привязка ΠΊ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Если Π² тСкст запроса внСсСны измСнСния ΠΈ какая-Ρ‚ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° пСрСстала Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ (ΠΈΠ»ΠΈ измСнился Π΅Π΅ порядок ΠΏΡ€ΠΈ использовании ΠΠ’Π’ΠžΠ£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’ΠΠΠ˜Π• Π±Π΅Π· явного указания ΠΏΠΎΠ»Π΅ΠΉ), ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ индСксу ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ станСт Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ. ВсСгда явно пСрСчисляйтС поля Π² конструкции ВЫБРАВЬ ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ ΠΊ Π½ΠΈΠΌ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Π° Π½Π΅ ΠΏΠΎ порядковому Π½ΠΎΠΌΠ΅Ρ€Ρƒ.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ структура Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ соотвСтствуСт оТиданиям ΠΊΠΎΠ΄Π°. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠšΠΎΠ»ΠΎΠ½ΠΊΠΈ ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° Π΄Π°Π½Π½Ρ‹Ρ…, нСсоотвСтствиС количСства ΠΏΠΎΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ массив Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ сформирован Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. ΠŸΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ "лишним" полям Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹.

Если Π²Ρ‹ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚Π΅ массив ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π°, провСряйтС Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ…. Частичная потСря Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ массив окаТСтся ΠΊΠΎΡ€ΠΎΡ‡Π΅, Ρ‡Π΅ΠΌ рассчитывал Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

πŸ’‘

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

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ

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

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

РСгулярно ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ старого ΠΊΠΎΠ΄Π°. ЛСгаси-ΠΊΠΎΠ΄ Π² конфигурациях 1Π‘:Π—Π£ΠŸ ΠΈΠ»ΠΈ 1Π‘:ERP часто содСрТит уязвимыС мСста, написанныС Π² старыС Π²Ρ€Π΅ΠΌΠ΅Π½Π°, ΠΊΠΎΠ³Π΄Π° трСбования ΠΊ устойчивости Π±Ρ‹Π»ΠΈ Π½ΠΈΠΆΠ΅. Π—Π°ΠΌΠ΅Π½Π° ТСсткой индСксации Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ»ΠΈ встроСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ сдСлаСт систСму ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π΅Π΅ ΠΈ ΠΏΡ€ΠΎΡ‰Π΅ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ОбновлСниС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с коллСкциями. БвСряйтС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ критичСских участков ΠΊΠΎΠ΄Π° с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΊ Π½ΠΎΠ²ΠΎΠΉ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ послС обновлСния.

πŸ’‘

Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ скриптов Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅. Он ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасныС мСста Π² ΠΊΠΎΠ΄Π΅, Π³Π΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π° с Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ нСвСрная индСксация.

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ?

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ связано с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²Π°ΠΌΠΈ доступа, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… запрос Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΎΠ΅ количСство строк. Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π² вСрсиях клиСнтского прилоТСния ΠΈΠ»ΠΈ кэшС Ρ„ΠΎΡ€ΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… мСстах ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

МоТно Π»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π³Ρ€Π°Π½ΠΈΡ† массива Π² настройках?

НСт, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π³Ρ€Π°Π½ΠΈΡ† являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ бСзопасности ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘. ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ Π±Ρ‹ ΠΊ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСй систСмы ΠΈ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ….

Как быстро Π½Π°ΠΉΡ‚ΠΈ мСсто ошибки Π² большом ΠΌΠΎΠ΄ΡƒΠ»Π΅?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ "Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ с ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ" ΠΈ настройтС остановку Π½Π° ошибкС. Π‘Ρ‚Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ строку. Если ΠΊΠΎΠ΄ выполняСтся Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ клиСнтскому сСансу.

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

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