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

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

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

25 ответов

12 просмотров

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 ставить финальным эксептом

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта