Предотвращение возможных ошибок в коде - это несомненно хороший стиль программирования. И, как правило, чем больше опыта - тем чаще ты видишь глазами в коде потенциально опасное место ещё до того, как работающее приложение упадёт и само тебе на него укажет красивыми матюками на английском языке.
Когда меня попросили дописать одну штуку в код, я сказал - "Да как нехрен делать!". Потому что дописать в итоге надо было всего одну строчку. Разумеется, я тут же увидел, как именно здесь может рухнуть программа, и, весьма гордый собой, дописал ещё две строчки, во всех ракурсах предупреждающие возможную проблему.
Тут же замутив тестовый запуск, я с нескрываемым удовольствием пошёл проверять, как сработает то самое место, что я защитил двухслойной бронёй. Если вы думаете, что выражение лица Копперфильда, собирающегося спиздить Статую Свободы прямо перед многотысячной толпой, хоть на 10 процентов дотягивало до тех эмоций, что играли в этот момент на еблище моего лица - вы жестоко ошибаетесь. Жестом ахуенного фокусника я нажал кнопку...
...программа рухнула именно на одной из тех самых двух строчках-предохранителях, призванных защитить мою голую жопу...
И тут я понял, что достиг вершин просветления.
Законы Клипштейна в приложении к созданию опытных образцов и производству.
<...>
5. Прибор, защищаемый быстодействующим плавким предохранителем, сумеет защитить этот предохранитель, перегорев первым.
Когда меня попросили дописать одну штуку в код, я сказал - "Да как нехрен делать!". Потому что дописать в итоге надо было всего одну строчку. Разумеется, я тут же увидел, как именно здесь может рухнуть программа, и, весьма гордый собой, дописал ещё две строчки, во всех ракурсах предупреждающие возможную проблему.
Тут же замутив тестовый запуск, я с нескрываемым удовольствием пошёл проверять, как сработает то самое место, что я защитил двухслойной бронёй. Если вы думаете, что выражение лица Копперфильда, собирающегося спиздить Статую Свободы прямо перед многотысячной толпой, хоть на 10 процентов дотягивало до тех эмоций, что играли в этот момент на еблище моего лица - вы жестоко ошибаетесь. Жестом ахуенного фокусника я нажал кнопку...
...программа рухнула именно на одной из тех самых двух строчках-предохранителях, призванных защитить мою голую жопу...
И тут я понял, что достиг вершин просветления.
Законы Клипштейна в приложении к созданию опытных образцов и производству.
<...>
5. Прибор, защищаемый быстодействующим плавким предохранителем, сумеет защитить этот предохранитель, перегорев первым.
this.ActiveRow=this.Rows[0];
Падение возможно, если
1)в grid не были загружены строки
2)были загружены, но после удаления их число стало равно нулю.
if(this.Rows!=null) //исключаем, если строки не были заданы
if(this.Rows.[0]!=null) //исключаем, если удалили последнюю строку и она стала undefined
this.ActiveRow=this.Rows[0];
Вот во второй строчке и крылась ошибка. На null компилятор проверить её не успевал именно потому, что она была сама undefined
if(this.Rows!=null)
if(this.Rows.Count>0)
this.ActiveRow=this.Rows[0];
Падение возможно, если
1)в grid не были загружены строки
каким образом тогда одну из них можно удалить?
Именно так. Разве я где-то упомянул обратное?
>>Которая, в свою очередь, даже будучи вызвана с пустой таблицей, должна увидеть ошибку и нормально завершить работу.
Именно так. Разве не для этого и писались две предупреждающие строчки?
>>У вас же получается, что пустая таблица делает неактивной кнопку,
И это тоже! При любом перемещении по таблице всё меню динамически перестраивается, постоянно. В зависимости от выделенной строки и её характеристик. Точно так же оно и перестраивается в случае, когда удаляется последняя запись.
> Именно так. Разве не для этого и писались две предупреждающие строчки?
Нет. Ты их писал как часть функции выделения первой строчки. Я же говорю, что они должны были присутствовать ещё в самой функции удаления строчки.
Во писец. Полез в исходники, чтобы надёргать куски кода и показать что откуда вызывается. Оба компонента срубили к чёртовой матери. Проекты из солюшена и даже из СоурСейфа. Япона мать, когда успели. В пятницу ж ещё были. Интересная перестройка.
А еще бывает обидно, когда сервер падает на отладочной печати.)
Гыгы. Да, эт хорошо