top <[EMAIL PROTECTED]> wrote: > Alex Martelli wrote: > [snip] > > I disagree: compile time is when the compiler is running (for > example, > > the compiler is the component which diagnoses syntax errors, while > other > > errors are diagnosed ``at runtime''). > [snip] > > That thing about syntax errors is news to me. I thought they were > caught at runtime, since you can catch them as exceptions, as in: > > try: prijnt projnt > except SyntaxError: print "See, it gets caught"
Nope: kallisti:~/cb alex$ cat a.py try: prijnt projnt except SyntaxError: print "See, it gets caught" kallisti:~/cb alex$ python a.py File "a.py", line 1 try: prijnt projnt ^ SyntaxError: invalid syntax kallisti:~/cb alex$ > If this happens at compile-time, I'd like to know how. You can catch SyntaxError when it happens (e.g) on an explicit call to the built-in function ``compile'', or, say: >>> try: import a ... except SyntaxError: print "caught!" ... caught! Here, the compilation of a.py (which has the error, see the cat above) happens AFTER the try/except itself has been compiled, and while the try clause is executing (compiling happens as part of import of a .py unless the .pyc file is already there & updated); so the exception handler can of course catch the exception. Alex -- http://mail.python.org/mailman/listinfo/python-list