On Sat, May 20, 2017 at 11:40 AM,  <gareths2...@cardensv.com> wrote:
> def calc(self, display):
>     try:
>         display.set(eval(display.get()))
>     except:
>         display.set("Type an actual equation please!")

Without any specific questions, you're not going to get anything more
than a basic eyeballing of the code. So I'm going to say this: Don't
do this! Just plain don't! A bare "except" clause is almost never the
right thing to do, and on the rare occasions when you really want to
catch everything, at very least, report on the actual error. You're
using eval(), which means that any code can be executed, which means
that literally any exception could occur. Additionally, your
try/except is around the set and get, too. Here's how I would write
this:

def calc(self, display):
    equation = display.get()
    try:
        result = eval(equation)
    except (ValueError, TypeError):
        result = "<unsuitable data>"
    except Exception as e:
        result = "<%s: %s>" % (type(e).__name__, str(e))
    display.set(result)

That lets you give much friendlier messages on known exceptions, and
still be informative and helpful on unknown ones.

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to