tohil icon indicating copy to clipboard operation
tohil copied to clipboard

Python exceptions don't preserve class

Open wusspuss opened this issue 3 years ago • 2 comments

Not sure if this is the intended behavior {1:2,4:5}[6] in regular python will give something like

Traceback (most recent call last):
  <traceback here ...>
KeyError: 6

While calling python through tohil will produce

'6' (error in python object call)
from python code executed by tohil
<tracback here ...>

That '6' may be quite confusing, and potentially important information is lost about the exception (the fact that it's a keyerror). Since this behavior works fine and makes sense for some cases like say ZeroDivisionError: division by zero -> division by zero, I don't know if it is indeed intended. However, even tcl's own dict get {1 2} 3 won't just say 3, rather key "3" not known in dictionary. Would it be ok to make tohil return the exception class name along the description?

wusspuss avatar Jan 29 '22 03:01 wusspuss

Would a PR changing the behavior to smth like KeyError 6 be accepted? Tests would have to be updated and I don't think backwards compatibility would be possible

wusspuss avatar Jan 30 '22 13:01 wusspuss

We do capture the exception type, but it's socked away in $errorCode

% tohil::eval {[][0]}
list index out of range
% puts $errorCode
PYTHON IndexError {list index out of range}

I'll think a bit on how best we could include this information in a more visible way.

NasaGeek avatar Jan 31 '22 19:01 NasaGeek