Обработка исключительной ситуации
План
- Что такое стек вызовов
Что такое исключительная ситуация (int(), open(), 1/0)? пример
- Как можно поступать в этом случае? (return, print, exit, исключение, continuation)
- Как это сделано в питоне?
- Обработка (try .. except)
- Сворачивание стека (пример).
- Создание человеческих сообщений об ошибках. stderr.
- Выход из нескольких вложенных циклов.
- Типы исключений.
- Обработка (try .. finally)
- assert
Контрольная работа
- Что ответит питон на такие строки?
Опишите функцию unique, которая получает на вход список, который может содержать один и тот же элемент несколько раз, и возвращает список, содержащий каждый элемент входного списка только один раз, в произвольном порядке. Например, должен быть возможен такой диалог:
Упражнения
Если вы ещё не написали скрипт sum.py из 8-го занятия, напишите его в простейшей реализации (задание 1.a)1
Доделайте скрипт sum.py таким образом, чтобы когда он натыкается на строку с синтаксической ошибкой, он сообщал об этом пользователю, но прдолжал считать сумму корректно.
Доделайте скрипт sum.py таким образом, чтобы на все пользовательские ошибки он выдавал человеческие сообщения.
- Добавьте в скрипт требование, чтобы числа в строках были неотрицательными.
- Набейте в интерпретатор этот код:
Запустите несколько раз функцию a(). Что делает функция toss()? Что делают функции a() и b()?
Это тривиально. Самая дотошная реализация, включающая в себя комментарии и всю избыточную пляску с бубном занимает 15 строк и не несёт в себе ничего сложного. (1)