[Python-Dev] Exceptions in LOAD_GLOBAL and LOAD_NAME (original) (raw)
Mark Shannon mark at hotpy.org
Thu Feb 23 11:12:13 CET 2012
- Previous message: [Python-Dev] Windows build - fixing compile warnings before VS2010
- Next message: [Python-Dev] Exceptions in LOAD_GLOBAL and LOAD_NAME
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
The code below causes different behaviour for LOAD_GLOBAL and LOAD_NAME. Which is correct? Should exceptions raised in the equality test be converted to a NameError or just propogated?
Cheers, Mark.
import sys
class S(str): pass
def eq_except(self, other): if isinstance(other, str): raise TypeError("Cannot compare S and str")
globals()[S("a")] = 0
S.eq = eq_except
def f(): print(a)
try: f() except: print(sys.exc_info()[1])
try: print(a) except: print(sys.exc_info()[1])
Output:
TypeError('Cannot compare S and str',) NameError("name 'a' is not defined",)
- Previous message: [Python-Dev] Windows build - fixing compile warnings before VS2010
- Next message: [Python-Dev] Exceptions in LOAD_GLOBAL and LOAD_NAME
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]