In the computer context, saving refers to the process of writing data to a storage device so it can be accessed and used later, even after the computer is turned off.
Работа с исключениями в питоне выполняется ключевыми словами try, except, else, finally и raise. При помощи их можно сгенерировать исключение и обработать его. Ошибка же (error) по английски это просто субъективное описание ситуации. Никаких специфических специальных средств или терминов связанных с ошибками в Питоне нет. Вы можете обработать логическую ситуацию, которую называете ошибкой используя исключения, или по другому, например вернув код ошибки.
С другой стороны можно использовать исключения для обработки ситуаций вовсе не связанных с какими-либо ошибками.
В общем ошибка вовсе не равна исключению, почему я и написал свой коммент.
А мне все-таки больше нравится вариант с иньекцией зависимостей через аргументы. Потому, что хочется глядя на сигнатуру функции видеть все ее зависимости. А так это не так уж силно отличается от глобальных переменных.
Вот самое на мой взгляд правдопобное описание события, утянул из ФБ. Я не настоящий сварщик, но тут по крайней мере у меня не течет кровь из глаз и не переклинивает мои инженерные мозги:
Что произошло?
В Испании и Португалии возник дефицит активной мощности ~4 ГВт после аварийного отключения магистральной линии между Наваррой и Пиренеями (соединение с Францией).
Это привело к падению частоты до 49,3 Гц и автоматическому отделению Иберийского полуострова от общеевропейской сети ENTSO-E.
Ещё накануне ENTSO-E предупредила об «оранжевом» уровне угрозы:
- плановый ремонт 6 ГВт АЭС во Франции (Flamanville-3, Cattenom-1),
- остановка 3 ГВт угольных мощностей в Германии,
- резкое сокращение резервов электроэнергии.
Причины кризиса
Узкое место в перетоках Франция → Испания
После мягкой, но ветреной зимы ранняя апрельская жара высушила Пиренейских ГЭС. Импорт из Франции достиг рекордных 4 ГВт, но зависел от единственной ЛЭП – её обрыв привёл к отключению.
Затянувшийся ремонт АЭС во Франции
EDF продлил простой Flamanville-3 на неделю, что в сумме вывело из работы 12 ГВт атомных мощностей (⅕ французского парка).
Задержка сетевых инвестиций
ACER до сих пор рассматривает предложение разделить немецкий рынок на 5 зон, чтобы снизить перегрузку линий север–юг, но решение не принято.
Системные риски, признанные ЕС
Ещё в марте Еврокомиссия рекомендовала гражданам иметь трёхдневный запас воды, еды и power bank’ов – то есть о таких сценариях знали заранее.
ИМХО, использование исключений должно быть предметом соглашений при написании софта. Впрочем, как и многое другое. Тогда они позволяют существенно упростить граф. Т.е. Желательно например ловить исключения в определенных, заранее оговоренных местах приложения. Тогда они будут резко упрощать граф, а не запутывать его. Вот я приводил пример таких договоренностей в API написанной с использованием FastAPI. Похожие договоренности можно использовать и в других областях.
Это был пример. Поскольку вижу, что Вы не поняли, добавлю. В исключение вы можете в момент его вызова добавить любую информацию. Например номер строки программы. Или запись. Или логгировать. Как я уже писал в примере про FastAPI. Вот возьмем пример про FastAPI. Вы получили какую-то ошибку, которая не дает выполнить запрос к Endpoint. Вам нужно залоггировать ошибку, вернуть ошибку в ответе на запрос и дать возможность расследовать Вашу ошибку. Мой путь:
Генерируем ID ошибки.
Пишем в лог: ID ошибки, номер строки кода.
Вызываем исключение, при этом добавляем в объект исключения ID ошибки, номер строки кода.
В обработчике исключения возвращаем ответ на запрос с кодом ошибки и ID ошибки.
Все. И вам не нужно возвращать информацию через все вызовы и ничего не потеряно.
А когда у вас в блоке кода 3-5 мест, где может быть выброшено исключение одного и того же типа (например, мы открываем на чтение два файла, и третий - на запись, и каждый из них может не существовать или быть недоступен) - нам надо или принудительно сохранять контекст, или мы этот контекст потеряем.
В питоне эта проблема решается элементарно.
raise RuntimeError(f"Can not open file. Filename: {filename}")
В питоне обаботка исключений законная и вполне равноправная операция для управления ходом выполнения программы. Причем она требует (КМК) даже меньше ресурсов, чем if. Так что ничего страшного не случиться.
Скажем сделать цикл с выходами по исключениям вполне себе законное решение. Причем это иногда может упростить тело цикла.
Может лучше saving_delay?
Ну вообще-то это переводится примерно так: "Сохрани период". С именами все очень и очень непросто.
Очень все по разному. Стать хорошим сварщиком или скажем высококвалифицированым станочником весьма непросто.
Работа с исключениями в питоне выполняется ключевыми словами try, except, else, finally и raise. При помощи их можно сгенерировать исключение и обработать его. Ошибка же (error) по английски это просто субъективное описание ситуации. Никаких специфических специальных средств или терминов связанных с ошибками в Питоне нет. Вы можете обработать логическую ситуацию, которую называете ошибкой используя исключения, или по другому, например вернув код ошибки.
С другой стороны можно использовать исключения для обработки ситуаций вовсе не связанных с какими-либо ошибками.
В общем ошибка вовсе не равна исключению, почему я и написал свой коммент.
ИМХО, в Питоне неправильно называть "исключение ошибкой". Это совершенно законный способ изменить ход течения программы.
А мне все-таки больше нравится вариант с иньекцией зависимостей через аргументы. Потому, что хочется глядя на сигнатуру функции видеть все ее зависимости. А так это не так уж силно отличается от глобальных переменных.
Думаю, что в ушном канале возможно да. Там все сильно по другому работает, чем в открытом динамике.
Вот самое на мой взгляд правдопобное описание события, утянул из ФБ. Я не настоящий сварщик, но тут по крайней мере у меня не течет кровь из глаз и не переклинивает мои инженерные мозги:
Не спец по "гравитационным волнам", но эта статья это какой-то ужас.
Ну, если по спортивному, на соревнованиях по бегу можно идти. Нельзя бежать на соревнованиях по ходьбе. Так что со спортивной т.з. все в порядке.
У меня есть личный эмпирический метод оценки читаемости кода. А именно: расстояние с которого можно более-менее понять, что делает код.
Словари это лучшее, что есть в питоне. Просто нужно уметь их готовить.
Скоро изобретут кнопку, при нажатии на которую резко поднимается настроение. И все будут только сидеть и нажимать эту кнопку.
ИМХО, использование исключений должно быть предметом соглашений при написании софта. Впрочем, как и многое другое. Тогда они позволяют существенно упростить граф. Т.е. Желательно например ловить исключения в определенных, заранее оговоренных местах приложения. Тогда они будут резко упрощать граф, а не запутывать его.
Вот я приводил пример таких договоренностей в API написанной с использованием FastAPI.
Похожие договоренности можно использовать и в других областях.
Это был пример. Поскольку вижу, что Вы не поняли, добавлю. В исключение вы можете в момент его вызова добавить любую информацию. Например номер строки программы. Или запись. Или логгировать.
Как я уже писал в примере про FastAPI. Вот возьмем пример про FastAPI. Вы получили какую-то ошибку, которая не дает выполнить запрос к Endpoint. Вам нужно залоггировать ошибку, вернуть ошибку в ответе на запрос и дать возможность расследовать Вашу ошибку. Мой путь:
Генерируем ID ошибки.
Пишем в лог: ID ошибки, номер строки кода.
Вызываем исключение, при этом добавляем в объект исключения ID ошибки, номер строки кода.
В обработчике исключения возвращаем ответ на запрос с кодом ошибки и ID ошибки.
Все. И вам не нужно возвращать информацию через все вызовы и ничего не потеряно.
Прикольно, но без номеров я прямо страдал. У меня все файлы, а особенно команды начинаются с номеров.
Я такие статьи во многом ради комментов и читаю.
В питоне эта проблема решается элементарно.
В питоне обаботка исключений законная и вполне равноправная операция для управления ходом выполнения программы. Причем она требует (КМК) даже меньше ресурсов, чем if. Так что ничего страшного не случиться.
Скажем сделать цикл с выходами по исключениям вполне себе законное решение. Причем это иногда может упростить тело цикла.