Я делаю калькулятор на Python и в настоящее время пытаюсь предотвратить сбой программы при работе с большим вводом.
Единственный способ, которым я знаю, как отлавливать ошибки, это использовать 'try' и 'кроме', поэтому я написал это:
def solve(self, equation):
try:
return eval(equation)
except(OverflowError):
messagebox.showinfo("Error","Result too large")
return equation
(я знаю, eval
может быть опасно, но пользователь не может набрать любой ввод, поэтому я думаю, что все в порядке)
Когда я вводю огромное число в научной нотации, например '389e+10**(58)*9'
, OverflowError
успешно перехватывается, но если я добавляю что-то вроде '55555555**5555555'
, окно перестает отвечать.
У меня сложилось впечатление, что последний также поднимает OverflowError
, но теперь я думаю, что это может произойти, потому что это вообще не создает ошибки, а eval
просто не может справиться с обработкой результата. это большое.
Если это так, я думаю, что я должен наложить ограничение на то, насколько большим должен быть ответ, но я не уверен, как бы я принял решение по этому пределу. Есть предложения?