We had a bug reported that effectively boils down to we’re not swallowing 
exceptions when list calls __len__ 
(http://www.codeplex.com/WorkItem/View.aspx?ProjectName=IronPython&WorkItemId=20598).

We can obviously make the change to catch exceptions here in IronPython even if 
it seems like a bad idea to me ☺  But CPython seems to catch not only normal 
exceptions, but also SystemExit.  It seems like there’s been a move away from 
this so I thought I’d mention it here.  I tested it on 2.6.1 and 3.0.

import sys
class A(object):
    def __iter__(self): return iter(range(10))
    def __len__(self):
        try:
            print('exiting')
            sys.exit(1)
        except Exception as e:
            print('can I catch it?', e)

list(A())

which prints:

exiting
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to