170 похожих чатов

Всем привет Слушайте, а подскажите, как эксепшены могут вылезти, связанные с

with open?
Мне на ум приходит только FileNotFoundError ...
Пытался загуглить, но чета инфы мало, хотя, кмк, вопрос стандартный

25 ответов

8 просмотров

man 2 open в линуксах \ бзде можешь примерный маппинг кодов ошибок посмотреть здесь https://docs.python.org/3/library/exceptions.html#os-exceptions

Стас-Муравейник Автор вопроса
Alex
man 2 open в линуксах \ бзде можешь примерный ма...

Там по этому вопросу вроже только OSError подходит ...

Стас-Муравейник Автор вопроса
Alex
FileNotFoundError унаследован от OSError

И? Мне стоит просмотреть все ошибки OSError?

Стас Муравейник
И? Мне стоит просмотреть все ошибки OSError?

для общего развития определенно стоит

Стас-Муравейник Автор вопроса
Alex
для общего развития определенно стоит

А для решения моей текущей задачи?

Стас-Муравейник Автор вопроса
Alex
а ты ее озвучивал вообще?

Да Слушайте, а подскажите, как эксепшены могут вылезти, связанные с with open?

Стас Муравейник
Да Слушайте, а подскажите, как эксепшены могут выл...

1. это не задача. 2. вылезти может OSError или его дочерние классы.

Стас-Муравейник Автор вопроса
Alex
1. это не задача. 2. вылезти может OSError или его...

А что это? А сам OSError может вылезти? Я так понимаю, он кидает дочерние классы

может, но как правило будет один из его подклассов.

Стас Муравейник
А что это? А сам OSError может вылезти? Я так пони...

> А что это? это твоя попытка решить неозвученную задачу.

Стас-Муравейник Автор вопроса
Alex
может, но как правило будет один из его подклассов...

А почему тогда в доках к нему это не написано? Я скорее всего не понимаю, потому что опыта нет, но там абзац просто типа "возникает, когда появляется ошибка ОС типа "файл не найден" или "мало места" И больше к самому OSError пояснений нет А вот дальше идут дочери, среди которых есть, к примеру FileNotFound, указанный в описании OSError

Стас-Муравейник Автор вопроса
Alex
> А что это? это твоя попытка решить неозвученную...

Короче, пытаюсь покрыть эксепшенами и логами обычный with open Вот и всё Хотелось бы понять, какие ошибки могут вылетать в таких местах

Стас-Муравейник Автор вопроса
Alex
так кто тебе запрещает ловить OSError?

Никто, но: 1. Хотелось бы разобраться, что может пойти не так при работе с файлами 2. В литературе пишут, что лучше не ловить общие вещи типа except Exception 3. На разные дочери и реагировать стоит по-разному, нет?

Стас Муравейник
Никто, но: 1. Хотелось бы разобраться, что может п...

1. для этого как я уже сказал, ты можешь открыть список кодов ошибок системного вызова open() и пройтись по ним. 2. Не совсем верно. Базовые классы исключений типа`Exception` ты не должен ловить по месту, где ожидается конкретное исключение, но можешь ловить например на верхнем уровне, в качестве обработчика исключений по-умолчанию. 3. Исходя из постановки задачи ты сейчас не знаешь на какие исключения ты хочешь реагировать по-разному. Те исключения, для которых логика обработки известна ты должен ловить отдельно.

Стас-Муравейник Автор вопроса
Alex
1. для этого как я уже сказал, ты можешь открыть с...

1. Ок. Посижу, почитай офф доки 2. Я ничего не понял вообще 3. То есть по сути надо смотреть известные мне ошибки ифами, а потом остальные на всякий оборачивать проверкой на OSError?

Alex
1. это не задача. 2. вылезти может OSError или его...

ну и можно напортачить с типами параметров

Стас Муравейник
1. Ок. Посижу, почитай офф доки 2. Я ничего не пон...

Ошибки обычно except FirstException: # do smth except SecondException: # do smth Итд) Не ифами перехватывают, я к этому

2. перехватывать конкретный базовый класс исключений, который бросает конкретная функция совершенно нормально 3. то есть ты например 3.1 не знаешь какое конкретное исключение ждешь, и хочешь обработать любую ошибку открытия файла. try: fp = open(...) except OSError: # ... 3.2 знаешь как обработать ситуацию когда файл не найден, тогда именно это исключение и обрабатываешь и остальные пробрасываешь наверх: try: fp = open(...) except FileNotFoundError: # ... 3.3 ты хочешь обработать ситуацию когда файл не найден одним способом а остальные исключения иначе: try: fp = open(...) except FileNotFoundError: # ... except OSError: # ...

Стас-Муравейник Автор вопроса
Владимир
Ошибки обычно except FirstException: # do sm...

А, ну я условно ТИпа OSError ставить финальным эксептом

Стас-Муравейник Автор вопроса
Стас Муравейник
А что такое "пробрасывать наверх"?

необработанные исключения всплывают вверх по стеку вызовов.

Стас-Муравейник Автор вопроса

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Я вот подумал. SSE выполняет операции максимум с 64-битной точностью. А FPU - всегда с 80-битной. Разве не должно быть FPU точнее тогда?
The Bird of Hermes
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
как быть с принтером? такой подход прокатит?
zamtmn
12
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
This is a big issue. Just by being a citizen of a country, you are denied to contribute to Open Source software: https://youtu.be/L5Ec5jrpLVk?si=1iIuHnMPbCB4anV-
Sharuzzaman Ahmat Raslan
72
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Карта сайта