Информация о версии - Python 2.7.15; Python 3.6.5 ; IPDB == 0,11
Я не могу получить доступ к пойманному исключению err
в Python 3 внутри отладчика (pdb
или ipdb
) в следующем коде. Он также недоступен в locals
.
try:
raise ValueError("I am ValueError")
except ValueError as err:
print("err={}".format(err))
print("err" in locals())
import pdb; pdb.set_trace() # not able to acess err in Python 3
ВЫВОД:
Python 2:
err=I am ValueError
True
--Return--
> test_script.py(6)<module>()->None
-> import pdb; pdb.set_trace() # not able to acess err in Python 3
(Pdb) print("err" in locals())
True
Python 3:
err=I am ValueError
True
--Return--
> test_script.py(6)<module>()->None
-> import pdb; pdb.set_trace() # not able to acess err in Python 3
(Pdb) print("err" in locals())
False <------------------ BUG??
(Pdb)
Это происходит только внутри отладчика, так как err
волшебным образом восстанавливается в locals
после выхода из (или никогда не входа) отладчика.
try:
raise ValueError("I am ValueError")
except ValueError as err:
print("err={}".format(err))
print("err" in locals()) # True in both py2/3
import pdb;
print("err" in locals()) # True in both py2/3