Как остановить выполнение кода из-за ошибки ввода, не вызывая сбой графического интерфейса - PullRequest
1 голос
/ 04 октября 2011

У меня была программа, разработанная на Python (2.7 и 3.2), которая читает три файла и генерирует некоторый код на основе этих файлов. В коде у меня было несколько проверок входного файла, чтобы зафиксировать любые ошибки ввода пользователем. Если программа ловит ошибку ввода, я использовал команду os.sys.exit (), чтобы остановить обработку и выдать сообщение об ошибке. Я в основном использовал IDLE для процесса, и это работало нормально.

Теперь я разработал графический интерфейс для программы для развертывания с использованием PYQT4. Пользователь использует графический интерфейс для ввода всех необходимых входных файлов и условий, а затем графический интерфейс вызывает предыдущий код, сгенерированный мной, с необходимыми аргументами.

Однако я обнаружил, что если пользователь делает ошибку во входных файлах, когда предыдущий код перехватывает эти ошибки и выполняется os.sys.exit (), сам графический интерфейс пользователя полностью отключается; что не хорошо.

Я ввел те же проверки входных файлов в графический интерфейс, поэтому, если они обнаружены, они обрабатываются в графическом интерфейсе, а не в коде. Но есть определенные проверки обработки, которые происходят внутри кода, что GUI не имеет к ним доступа.

Вопрос: Есть ли способ остановить выполнение вызываемого кода, напечатать сообщение об ошибке (например, в файл журнала; который я уже использую), не вызывая вообще выход из GUI?

Спасибо,

примечание: на данный момент код слишком велик, чтобы я мог интегрировать его в графический интерфейс как класс.

Ответы [ 2 ]

3 голосов
/ 04 октября 2011

Я предполагаю, что вы не можете или предпочитаете не изменять свои программы CLI и вместо этого хотите перехватить исключение, вызванное sys.exit, вместо этого в графическом интерфейсе.Вот как:

import os
try:
   os.sys.exit()
except SystemExit as err:
   print('Caught ya')
0 голосов
/ 04 октября 2011

Вы пробовали обрабатывать исключения в python.

try: #some code here except Exception: print 'Something bad happened'

Лучше попробуй отловить конкретные исключения. Список встроенных исключений http://docs.python.org/library/exceptions.html#bltin-exceptions

...