Найти - Пользователи
Полная версия: поймать ошибку в скрипте и отправить по почте
Начало » Python для новичков » поймать ошибку в скрипте и отправить по почте
1
ilnur
привет

вот есть у меня скрипт. Хочу чтобы при возникновении ошибки в скрипте отправить эту ошибку по почте. Скажите как это реализовать? Мне надо не отдельно в какой то функции. А вообще в коде. Отправить почту я могу. А как реалмзовать метод отлова ошибки?
adray
try/except
Mozart
try: a ** b; print u"Сработало!"
except Exception as err: print u"Не сработало!"; senderrmsg(err) # Отправляем ошибку на почту
dimy44
Ему же вообще надо при возникновении ошибки в любом месте, try-except всюду не рассуешь. Думаю, тут просто надо создать класс с методом write, в котором переданный ему в параметре текст ошибки будет отсылаться на почту, и перенаправить туда sys.stderr
bw
dimy44 :-)
# ...
def main(argv=None):
    func1()
    func2()
    if cond1():
        func3()
if __name__ == '__main__':
    try:
        main(sys.argv)
    except KeyboardInterrupt:
        pass
    except Exception:
        excinfo = sys.exc_info()
        sendErrorReport(*excinfo)
        traceback.print_exception(*excinfo)

ilnur, ты ногами текст набирал :-)? И посмотри, что такое декораторы.

..bw
ilnur
dimy44
точно
попробую запустить скрипт через другой, через exec. а exec уже вложить в try/except итам уже отправить по почте.
bw
ilnur, ты ногами текст набирал :-)
извените за опечатки. писал со смрта. редактировать было лень

JOHN_16
ilnur
ilnur
попробую запустить скрипт через другой, через exec. а exec уже вложить в try/except итам уже отправить по почте.
И вам не кажется это решение несколько не правильным?
Писать код в стиле ООП - не только красиво, но и полезно, в частности решает элегантно и вашу проблему. Вот такой архитектуры может быть ваш код
class Foo(object):
    def run(self):
        # Code here
if __name__=='__main__':
    try:
        foo=Foo()
        foo.run()
    except Exception:
        # send error

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB