pdb / ipdb проглатывает исключение в отладчике в Python 3 - PullRequest
0 голосов
/ 04 апреля 2019

Информация о версии - 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
...