Как обнаружить ошибку синтаксического анализатора EOF из кода? - PullRequest
0 голосов
/ 08 апреля 2019

Код для графического интерфейса пользователя калькулятора.Как обнаружить ошибку синтаксического анализа EOF в моем коде?

Код:

def btnEqualsInput():
    global operator
    if operator!='':
        sumup = str(eval(operator))
        text_Input.set(sumup)
        operator =""

Вывод, когда я нажимаю '=' с 3 * в текстовом поле

    sumup = str(eval(operator))
  File "<string>", line 1
    3*
     ^
SyntaxError: unexpected EOF while parsing

Я хочу отобразить «Ошибка!»в калькуляторе всякий раз, когда пользователь нажимает «Равно» в неправильном синтаксисе в текстовом поле.

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Просто перехватите исключение:

def btnEqualsInput():
    global operator
    if operator!='':
        try:
            sumup = str(eval(operator))
            text_Input.set(sumup)
            operator =""
        except SyntaxError as e:
            print("Error!",str(e)) #e contains the type of message, for example  unexpected EOF while parsing

Вы также можете проанализировать строку ошибки, если хотите сделать что-то конкретное (например, для EOF "EOF" in str(e) будет true)

0 голосов
/ 08 апреля 2019

Вы хотите перехватить исключение парсера:

try:
    sumup = str(eval(operator))
except SyntaxError as e:
    print('Error!', e)
...