Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6

Обработка ошибок. Хочу объяснений

27.07.2015, 07:22. Показов 891. Ответов 2
Метки нет (Все метки)

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

Итак, сделаем три функции, одна внутри другой, в первой try-exept:
Python
1
2
3
4
5
6
7
8
9
10
11
def function1():
    try:
        return function2()
    except Exception as e:
        log_message(e)
 
def function2():
    return function3()
 
def function3():
    print 18/0
Вывод в лог, функция:
Python
1
2
3
4
5
6
7
def log_message(ex):
    import traceback
    import sys
    exc_type, exc_value, exc_traceback = sys.exc_info()
    messages0 = traceback.format_exception(exc_type, exc_value, exc_traceback)
    message = ''.join(messages0)
    print message
Вызываем функцию function1. Получаем стек:
Code
1
2
3
4
5
6
7
8
Traceback (most recent call last):
  File "D:/BOS/gui35/gui/rex/h5_hdm/errorlog.py", line 5, in function1
    return function2()
  File "D:/BOS/gui35/gui/rex/h5_hdm/errorlog.py", line 17, in function2
    return function3()
  File "D:/BOS/gui35/gui/rex/h5_hdm/errorlog.py", line 20, in function3
    print 18/0
ZeroDivisionError: integer division or modulo by zero
Закавыка в том, что наш ексепшн по имени e нигде не используется. В log_message я его передаю, как параметр, это заготовка, в коде его не трогаю.

Посему возникают вопросы о логичности такой обработки.
По идее, информация о стеке должна быть в объекте-ексепшне. Но я там её на нашёл.
Зато я смог получить стек из некой общесистемной информации sys.exc_info(). Проблема в том, что к тому моменту, как исполнение дошло до sys.exc_info(), теоретически, эта информация может уже сто раз поменяться, поэтому закладываться на неё не хочу.
Логично было бы получить стек или из ексепшна, или из какой-то функции от него, типа traceback.magic_get_stack(ex).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.07.2015, 07:22
Ответы с готовыми решениями:

Обработка ошибок в python
Добрый день. Подскажите пожалуйста как можно перехватить ошибку с текстом. В моем примере я перехватываю все ошибки первым except, а мне...

Хочу книгу, чтобы там было минимум объяснений, максимум практики, побольше заданий
Хай не давно начал изучение с++ прошу ссылки на норм ресурсы. Не давно начал изучение с++, освоил переменные, чутка массивы, создание...

Из-за этой функции программа не работает,выдаёт кучу ошибок,хочу разобраться
int del_1(Elem* start) { if (!start) cout << "Список пуст" << endl; Elem* tmp, * prev, * tmp2; tmp = start->next; tmp2...

2
 Аватар для Wolkodav
842 / 480 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
27.07.2015, 13:24
dondublon, почитайте тут. Но скажу одно, в python Exception не храниться информация о traceback. И я думаю, что информация не поменяется... Наверное интерпритатор знает, что в данном месте надо брать данные по определённому адресу, поэтому проблем не должно быть.
1
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
27.07.2015, 15:19  [ТС]
Спасибо, кое-что интересное было.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.07.2015, 15:19
Помогаю со студенческими работами здесь

Обработка ошибок
Не подскажите, где можно найти материал на эту тему..

Обработка ошибок
Парни хелп. Не могу понять почему так работает.... Вот код: create procedure dbo.InsertClientUser ( @ClientID int =...

Обработка ошибок
В базе Access я поставила ограничение на поля-обязательность для заполнения, определенное кол-во знаков, ну и просто числовой или текстовый...

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

Обработка ошибок
Всем привет. Пытаюсь тут наваять принципы обработки ошибок и обработчики поинтереснее придумать под LS. Возник вопрос, а можно ли...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru