Why won't the run-time error reporter point to the error position with a caret like the syntax error reporter does? It knows exactly where the error is.

Terry Reedy tjreedy at udel.edu
Thu Aug 1 02:32:39 EDT 2019


On 7/31/2019 11:19 PM, jsalsman at gmail.com wrote:
> Honestly this is the only thing in over half a decade of daily python use which has disappointed me enough to want to ask the devs:
> 
>>>> print(1/)
>    File "<stdin>", line 1
>      print(1/)
>              ^
> SyntaxError: invalid syntax

SyntaxErrors mostly come from the parser, occasionally from the 
compiler, both of which have access to line and column.

>>>> print(1/1, 1/0, 1/1)
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> ZeroDivisionError: division by zero

This comes from the runtime engine, which only has access to line 
numbers, and even line numbers lie when a statement spans multiple 
lines.  In CPython, the runtime engine is executing bytecodes, and 
bytecode do not correspond to column numbers.  In something like
"a + b / (2 * c + d//3)", if the denominator (which could be on multiple 
lines) is 0, where should a caret point?

-- 
Terry Jan Reedy




More information about the Python-list mailing list