#python #python-3.x #exception #sys
Вопрос:
Я есть Python-сервер, который имеет массовый характер и unexcepting выключая его, перебила или без сохранения данных-это плохая идея.
Я нашел Тома sys.excepthook функцию и добавить его, так что не будет никакого способа, чтобы acidently прерываем программу с помощью CTRL C, но
после первого исключения я использовать CTRL C или любой другой exepction это, как не волнует и predent не
существует.
Код:
import time
import sys
def my_except_hook(exctype, value, traceback):
if exctype == KeyboardInterrupt:
print("WARNING: CTRL C WAS PRESSED!")
main_loop()
else:
sys.__excepthook__(exctype, value, traceback)
def main_loop():
print("starting!")
while True:
print("tick")
time.sleep(1)
sys.excepthook = my_except_hook
main_loop()
Исключение после второго Ctrl C:
Error in sys.excepthook:
Traceback (most recent call last):
File "C:somepaththatyoudonthavetoknownexcept_test.py", line 8, in my_except_hook
main_loop()
File "C:somepaththatyoudonthavetoknownexcept_test.py", line 17, in main_loop
time.sleep(1)
KeyboardInterrupt
Original exception was:
Traceback (most recent call last):
File "C:somepaththatyoudonthavetoknownexcept_test.py", line 21, in <module>
main_loop()
File "C:somepaththatyoudonthavetoknownexcept_test.py", line 17, in main_loop
time.sleep(1)
KeyboardInterrupt
Process finished with exit code -1073741510 (0xC000013A: interrupted by Ctrl C)
Полный выход:
starting!
tick
tick
WARNING: CTRL C WAS PRESSED!
starting!
tick
tick
Error in sys.excepthook:
Traceback (most recent call last):
File "C:somepaththatyoudonthavetoknownexcept_test.py", line 8, in my_except_hook
main_loop()
File "C:somepaththatyoudonthavetoknownexcept_test.py", line 17, in main_loop
time.sleep(1)
KeyboardInterrupt
Original exception was:
Traceback (most recent call last):
File "C:somepaththatyoudonthavetoknownexcept_test.py", line 21, in <module>
main_loop()
File "C:somepaththatyoudonthavetoknownexcept_test.py", line 17, in main_loop
time.sleep(1)
KeyboardInterrupt
Process finished with exit code -1073741510 (0xC000013A: interrupted by Ctrl C)
Комментарии:
1. Что именно вы ищете?
2. Я пытаюсь sys.exeptionhook работает несколько раз.