Я не уверен, правильно ли я понял вопросы, но если вы имеете в виду, что условие mid <= 0
не вызывает исключение, и функции продолжают работать до тех пор, пока оно не вызовет StackOverFlow, тогда просто используйте вместо этого условие: low >= high
Дело в том, что если во время двоичного поиска в массиве вы либо увеличиваете низкое значение, либо уменьшаете высокое, то есть, если искомое слово отсутствует в массиве, значение low будет продолжать увеличиваться до тех пор, покаон передает значение high.
Извините, если я неправильно понял ваш вопрос.