Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
6 / 2 / 0
Регистрация: 28.06.2019
Сообщений: 141

Обработка ошибок в python

29.11.2020, 04:35. Показов 872. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Подскажите пожалуйста как можно перехватить ошибку с текстом. В моем примере я перехватываю все ошибки первым except, а мне нужно все остальные ошибки перехватить в следующих исключениях
Изменить строку "raise Exception('test_error')" нельзя.
Python
1
2
3
4
5
6
try:
    raise Exception('test_error')
except Exception as e :
    print('обработал ошибку test_error')
except WindowsError:
    print('обработал другую ошибку')
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.11.2020, 04:35
Ответы с готовыми решениями:

Обработка ошибок. Хочу объяснений
Всем привет. Задался я тут темой обработки ошибок. Скажу сразу - то, что надо (вывод стека в лог), получилось, но это представляется...

[Python] Дек с защитой от ошибок
Реализуйте структуру данных "дек". Напишите программу, содержащую описание дека и моделирующую работу дека, реализовав все указанные здесь...

Обработка ошибок
Есть главный класс и несколько дочерних, входящих как в состав главного, так и друг в друга (не важно) Нужно в другой класс передать члена...

10
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
29.11.2020, 14:54
Поменяй местами два except
0
6 / 2 / 0
Регистрация: 28.06.2019
Сообщений: 141
29.11.2020, 16:30  [ТС]
Рыжий Лис, это был просто пример) цель - отловить определеную ошибку и закончить выполнение скрипта, а в случае остальных ошибок - перезапустить.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
29.11.2020, 16:41
vpip75pfr3, вечный цикл, при перехвате нашей ошибки делаем брек, при остальных просто логруем и продолжаем
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
30.11.2020, 12:24
Цитата Сообщение от vpip75pfr3 Посмотреть сообщение
цель - отловить определеную ошибку
Если вам нужна определённая - то и рейзите определённую, а не общий Exception. Но вообще сомнительный подход, лучше, чтобы тест возвращал нормальный результат в переменную.
0
6 / 2 / 0
Регистрация: 28.06.2019
Сообщений: 141
30.11.2020, 23:20  [ТС]
dondublon, Данная ошибка рейзится библиотекой sdk vbox. Временно я изменил рейз в самой библиотеке, но мне не травится такой подход.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
30.11.2020, 23:47
Цитата Сообщение от vpip75pfr3 Посмотреть сообщение
Данная ошибка рейзится библиотекой sdk vbox.
Но она ведь возникает только при обращении к определенному методу.
Вот там и делай перехват и логику обработки.

... Поймал себя на мысли, что уже отвык от try except так как в Go exeption'ов вообще нет и ты просто добросовестно обрабатываешь каждую ошибку, которую может вернуть метод и не паришься, что твой код может упасть...
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
01.12.2020, 10:36
vpip75pfr3, то есть остаётся единственный способ - смотреть текстовое сообщение?
Приведите на всякий случай реальный код, что-то не верится, что в sdk так начудили. vbox - это virtualbox?
0
01.12.2020, 10:46

Не по теме:

Garry Galler, на сколько я помню, в Go это всё решается ифами?

0
01.12.2020, 12:38

Не по теме:

Цитата Сообщение от Alli_Lupin Посмотреть сообщение
Go это всё решается ифами
В основном, да. Кому-то это не нравится - типа, лапша из if-ов и т.д., зато ты получаешь код, где обработаны все ошибки, поскольку Go буквально заставляет писать именно так. Идеология Go в этом плане прямо следует Python дзен: Ошибки не должны замалчиваться. Но в Python часто игнорируют этот принцип.
Ну а лапша выкорчевывается использованием своего шаблонного обработчика.

Go
1
2
3
4
5
func FatalIfErr(format string, err error) {
    if err != nil {
        log.Fatalf(format, err.Error())
    }
}
и далее в коде везде где нужно используем:
Go
1
2
content, err := ioutil.ReadAll(utf8)
FatalIfErr("[TOKEN]: %s", err)
Для обработки по типам ошибок пишем switch, что почти равноценно блокам
Python
1
2
3
4
5
6
7
8
try:
    ... 
exсept  E1 as err:
    ...    
except E2 as err:
    ... 
except E3 as err:
    ...
в Python.
Ну а в крайних случаях бросаем panic. Который, впрочем, можно и перехватить (это важно для web серверов, чтобы работали при любых ошибках).

0
01.12.2020, 13:00

Не по теме:

вроде в большинстве IDE и редакторах есть даже похожий стандартный снипет?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.12.2020, 13:00
Помогаю со студенческими работами здесь

обработка ошибок
Привет! Я реализовываю вывод сообщений пользователю через ajax, и никак не пойму, как это сделать красиво. Есть код, в общем простой...

Обработка ошибок
Здраствуйте! Есть такой фрагмент кода C# //Ввод коэффициентов private void textBox1_TextChanged(object sender, EventArgs e) ...

обработка ошибок
Есть класс треугольника, нужно, чтобы при вводе в конструктор нулей или минусовых значений вместо сторон, выдавало ошибку,получается...

Обработка ошибок
Делаю сумму разных листов (месяцев) за текущий год Т.к. листы с начала года ещё не существуют, необходимо этот момент игнорировать. ...

Обработка ошибок!
Где можна взять номера ошибок в лотус скрипт? и еще вопросик: пытаюсь испольховать в качестве лейбла имя подпрограымы , но не знаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru