Обрабатывайте ошибочные ситуации
страницаОбрабатывайте ошибочные ситуации
Сейчас вы узнаете несколько программистских «секретов». Все они связаны с коллекциями значений. Вот первый из них.
Некоторые методы объектов не всегда могут выполняться успешно. Пример этого вы можете увидеть уже в массиве. Например, если в синтакс-помощнике вы посмотрите описание метода Найти(), то увидите, что он возвращает Число или Неопределено. Число он возвращает тогда, когда выполняется успешно и в массиве есть то, что вы ищете. Но вполне может быть такая ситуация, что в массиве не окажется того, что вы ищете. И тогда он вернет значение Неопределено.
Начинающие программисты часто забывают об этой особенности. И это естественно: когда вы пишете программу, вы совершенно точно знаете, что у вас будет в массиве, а чего не будет. Но дело в том, что, когда пользователи (да и вы сами) начинают работать с вашей программой, они могут выполнить такую последовательность действий, которую вы не предусматривали в своей программе. И в результате в массиве не окажется того значения, которое, по вашему мнению, там обязательно должно быть.
Совет
Если вы думаете, что такого не может быть, то знайте, что такое может быть! Потому что пользователи думают совсем не так, как думаете вы!
А раз так, то правилом хорошего тона в программировании является обработка не только успешных действий, но и ошибочных ситуаций, которые могут возникнуть.
В данном случае в том месте, где вы бы написали просто Найти() (рис. 7.173), лучше обработать неудачную ситуацию, которая может возникнуть (рис. 7.174).

Рис. 7.173. Метод «Найти()»

Рис. 7.17****4. Метод «Найти()» и обработка ошибочной ситуации
То есть для того случая, когда метод возвращает значение Неопределено, написать условие Если. В нем обработать ошибочную ситуацию. Например, вывести какое-то информационное сообщение. А если в этой ситуации дальнейшая работа вашего алгоритма невозможна, то и завершить его с помощью инструкции Возврат.
Тогда получится, что если «все хорошо», исполнение пройдет мимо условия Если. А если «все плохо», выполнится тело условия и вы выйдете из процедуры, не выполняя остальные инструкции.
совет
Можете самостоятельно посмотреть с помощью синтаксической подсказки, что делает процедура ПоказатьПредупреждение(). У нее несколько параметров.
Обязательным параметром является только один – <ТекстПредупреждения>. Его вы и указали. Необязательные параметры, которые находятся после него, можно не указывать и не ставить запятые.
А вот «место» необязательного параметра, который находится перед ним, нужно обозначить запятой. Чтобы платформа понимала, что вашу строку «Вторник не найден…» нужно передать именно во второй параметр, а не в первый.
Смоделируйте ошибочную ситуацию – поставьте символ комментария в седьмой строке (рис. 7.175). Чтобы проверить, как это работает, запустите проект не в режиме отладки, а в обычном рабочем режиме. Для этого нажмите Ctrl+F11.

Рис. 7.17****5. Замените значение «Вторник» значением 2
Если теперь вы запустите проект, то увидите сообщение: «Вторник не найден!»
Чтобы посмотреть, как этот пример будет работать без условия Если, можете временно закомментировать это условие и тем самым исключить его из исполнения. Чтобы закомментировать сразу несколько строк, выделите их и нажмите Источник > Переключить комментарий в их контекстном меню (рис. 7.176).

Рис. 7.17****6. Добавить комментарий
Если после этого вы запустите проект, то увидите, что было бы, если бы вы не обрабатывали ошибочную ситуацию (рис. 7.177).

Рис. 7.17****7. Сообщение об ошибке
Смысл этого сообщения в том, что платформа не может выполнить операцию сложения ИндексВторника + 1. Потому что в переменной ИндексВторника у вас оказалось значение Неопределено, а для него не существует операции сложения с числом.
Самое неприятное в этом сообщении то, что платформа не может продолжить дальнейшую работу. Поэтому не спешите, не ленитесь, обращайте внимание на то, какие значения возвращают методы. Если возможна ситуация, когда выполнение метода заканчивается неудачей, обрабатывайте такие ситуации. Во-первых, ваше собственное сообщение поможет быстро понять, в чем проблема. А во-вторых, даже если ваш небольшой алгоритм закончился неудачей, пользователь сможет продолжить работу с вашей программой. Сможет воспользоваться другими ее возможностями.