How to process syntax errors
Terry Reedy
tjreedy at udel.edu
Tue Oct 11 00:58:03 EDT 2016
More information about the Python-list mailing list
Tue Oct 11 00:58:03 EDT 2016
- Previous message (by thread): How to process syntax errors
- Next message (by thread): How to process syntax errors
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 10/10/2016 11:24 AM, Chris Angelico wrote: > On Tue, Oct 11, 2016 at 1:13 AM, <mr.puneet.goyal at gmail.com> wrote: >> Is there any way to capture syntax errors and process them ? I want to write a function which calls every time whenever there is syntax error in the program. > However, you can catch this at some form of outer level. If you're > using exec/eval to run the code, you can guard that: > > code = """ > obj = MyClass() # using PEP 8 names > obj xyz > """ > try: > exec(code) > except SyntaxError: > print("Blah blah blah") Far from being 'un-pythonic' (Puneet's response), this is essentially what the interpreter does, either without or with a separate explicit compile step. IDLE splits the exec into two pieces in two processes. Except for the two process part, this either uses or copies code.InteractiveInterpreter in the stdlib. The fact that the latter separates compile and exec is what allows IDLE to subclass it and run the code object elsewhere, by over-riding the runcode method. # in IDLE process: code = <user entry in shell or editor> try: code_ob = compile(code, ....) except (SyntaxError, <other compile errors>) as e: <display error to user> # replace ^ with red background highlight else: <ship code to user process> # in user process exec(code, fake_main) # stdout, stderr connect to IDLE process -- Terry Jan Reedy
- Previous message (by thread): How to process syntax errors
- Next message (by thread): How to process syntax errors
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list