Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!gegeweb.org!newsfeed.kamp.net!newsfeed0.kamp.net!newsfeed.freenet.ag!news2.euro.net!newsgate.cistron.nl!newsgate.news.xs4all.nl!194.109.133.85.MISMATCH!newsfeed.xs4all.nl!newsfeed6.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.004 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'value,': 0.04; 'names.': 0.07; 'python': 0.08; 'exception.': 0.09; 'exceptions': 0.09; 'modulo': 0.09; 'am,': 0.12; 'exception': 0.12; 'library': 0.13; 'extensions': 0.15; '"serious': 0.16; 'block,': 0.16; 'denote': 0.16; 'exceptions.': 0.16; 'hint': 0.16; 'operator.': 0.16; 'semantically': 0.16; 'subject:syntax': 0.16; 'tuple,': 0.16; 'tuples,': 0.16; 'subject:question': 0.16; 'wrote:': 0.16; 'meant': 0.17; 'template': 0.19; 'jan': 0.19; 'seems': 0.19; 'maybe': 0.21; 'header:In-Reply-To:1': 0.22; 'statement': 0.23; 'operand': 0.23; 'defined': 0.24; 'string': 0.24; 'originally': 0.24; 'thanks.': 0.25; 'looks': 0.27; "i'm": 0.27; 'second': 0.29; 'fewer': 0.30; 'list"': 0.30; 'reflection,': 0.30; 'tuples': 0.30; 'x-mailer:apple mail (2.1084)': 0.30; 'least': 0.30; 'values': 0.32; 'supposed': 0.32; 'to:addr:python-list': 0.33; 'match': 0.33; 'rules': 0.33; 'wondering': 0.34; 'latter': 0.34; 'relaxed': 0.34; 'things': 0.35; 'similar': 0.36; 'opposed': 0.36; 'sequence': 0.36; 'skip:" 10': 0.36; 'charset:us-ascii': 0.36; 'but': 0.37; 'using': 0.37; 'why': 0.39; 'except': 0.39; 'sense': 0.39; 'subject:: ': 0.39; 'to:addr:python.org': 0.40; 'most': 0.60; 'unique': 0.60; 'type': 0.60; 'types': 0.61; 'more': 0.61; 'header:Message-Id:1': 0.62; '31,': 0.64; 'charles': 0.67; 'decision,': 0.67; 'strange': 0.68; 'collection': 0.68; '2012,': 0.84; 'marker': 0.84; 'markers': 0.84; 'received:64.191': 0.84; 'lists:': 0.91 Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Apple Message framework v1084) Subject: Re: except clause syntax question From: Charles Yeomans In-Reply-To: Date: Tue, 31 Jan 2012 13:04:22 -0500 Content-Transfer-Encoding: quoted-printable References: To: Python X-Mailer: Apple Mail (2.1084) X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 56 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1328033074 news.xs4all.nl 6902 [2001:888:2000:d::a6]:60209 X-Complaints-To: abuse@xs4all.nl Xref: x330-a1.tempe.blueboxinc.net comp.lang.python:19654 On Jan 31, 2012, at 8:24 AM, Mel Wilson wrote: > Charles Yeomans wrote: >=20 >> To catch more than one exception type in an except block, one writes >>=20 >> except (A, B, C) as e: >>=20 >> I'm wondering why it was decided to match tuples, but not lists: >>=20 >> except [A, B, C] as e: >>=20 >> The latter makes more sense semantically to me -- "catch all = exception >> types in a list" as opposed to "catch this single thing composed of = three >> exception types". >=20 > On reflection, it seems to hint at a style that Python extensions were = made=20 > in. (IIRC) the first operand in an `except` statement was originally = just=20 > an arbitrary marker to identify the exception. Unique string values = were=20 > customary, although the Python library defined things with standard=20 > exception names. Using a string means that general exceptions weren't = to be=20 > collected in general sequences; `except "Serious Error"` was never = meant to=20 > catch `raise "r"`. If only tuples were used for collections, it would=20= > create havoc for fewer of any weirdos who had used strange markers of = their=20 > own devising. >=20 > It looks like tuples were chosen as the most "lightweight", or maybe = least=20 > intrusive, sequence type to require to denote a collection of = exceptions. >=20 > You see a similar decision, with the opposite emphasis, with the = string=20 > modulo operator. The second operand is supposed to be a tuple, but if = the=20 > template string needs only one value, then the rules are relaxed and = any=20 > single non-tuple value is used as-is. >=20 Compatilbility; that makes sense. I came to python well after strings = were used for exceptions. Thanks. Charles Yeomans