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

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

29.11.2020, 04:35. Показов 841. Ответов 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
 Аватар для Рыжий Лис
5972 / 3734 / 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
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
29.11.2020, 16:41
vpip75pfr3, вечный цикл, при перехвате нашей ошибки делаем брек, при остальных просто логруем и продолжаем
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 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
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru