Ошибка может возникнуть в случае:
Например, у тебя есть массив элементов и тебе необходимо получить доступ к одному из них. Но если ты обратишься к несуществующему элементу - программа сгенерирует искючение. Чтобы этого не оказалось, необходимо сначала проверить количество элементов в массиве.
if the_array.size() > 0 && the_array[0] > condition
Здесь условие "the_array[0] > condition" - зависимое. Операция && выполняется слева направо, то есть сначала будет проверено условие the_array.size() > 0, и только после него будет проверено условие the_array[0] > condition.
Типичная ошибка программирования, о которой говорится у Дейтелей, это - смена условий местами. Вот так - неправильно:
if the_array[0] > condition && the_array.size() > 0
Если массив пуст, то в таком варианте программа сгенерирует исключение при проверке первого условия, а до второго условия дело не дойдет. Поэтому единственно правильный в данном случае - первый вариант кода.