Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!gegeweb.org!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!tudelft.nl!txtfeed1.tudelft.nl!multikabel.net!newsfeed10.multikabel.net!xlned.com!feeder7.xlned.com!news2.euro.net!newsgate.cistron.nl!newsgate.news.xs4all.nl!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.001 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'example:': 0.03; 'value,': 0.04; 'sys': 0.05; 'desirable.': 0.07; 'exception,': 0.07; 'type,': 0.07; 'x-mailer:evolution 2.28.3': 0.07; 'command.': 0.09; 'am,': 0.12; 'exception': 0.12; '16,': 0.15; 'much!': 0.15; 'chris,': 0.16; 'except:': 0.16; 'frederic': 0.16; 'from:addr:anthra.norell': 0.16; 'omitting': 0.16; 'row': 0.16; 'runtimeerror': 0.16; 'wed,': 0.17; 'advance': 0.17; 'wrote:': 0.18; "doesn't": 0.23; 'received:195.186': 0.23; 'received:bluewin.ch': 0.23; 'header:In-Reply-To:1': 0.23; 'traceback': 0.24; "i'm": 0.26; 'all,': 0.27; 'raise': 0.27; 'print': 0.29; 'generally': 0.30; 'bare': 0.30; 'from:addr:bluewin.ch': 0.30; 'chris': 0.30; 'url:library': 0.30; 'subject:?': 0.31; 'error': 0.31; 'thanks': 0.31; 'nov': 0.31; 'to:addr:python-list': 0.32; 'match': 0.33; 'probably': 0.34; 'statement,': 0.34; 'try:': 0.34; 'subject:How': 0.35; 'url:python': 0.35; 'something': 0.36; 'help!': 0.37; 'but': 0.37; 'url:org': 0.38; 'received:192': 0.38; 'url:docs': 0.38; "i'd": 0.39; 'should': 0.39; 'except': 0.39; "there's": 0.39; "it's": 0.39; 'subject:: ': 0.39; 'to:addr:python.org': 0.39; '2011': 0.62; 'subject:. ': 0.65; 'received:ch': 0.66; 'contrary': 0.73; 'saving': 0.76; '09:09': 0.84; 'everything,': 0.84; 'ridiculously': 0.84; 'subject:try': 0.84 Subject: Re: try - except. How to identify errors unknown in advance? From: Frederic Rentsch To: python-list@python.org In-Reply-To: References: <1321462647.2315.31.camel@hatchbox-one> Content-Type: text/plain; charset="UTF-8" Date: Wed, 16 Nov 2011 19:39:32 +0100 Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit 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: 50 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1321468840 news.xs4all.nl 6979 [2001:888:2000:d::a6]:35041 X-Complaints-To: abuse@xs4all.nl Xref: x330-a1.tempe.blueboxinc.net comp.lang.python:15785 On Wed, 2011-11-16 at 09:09 -0800, Chris Kaynor wrote: > On Wed, Nov 16, 2011 at 8:57 AM, Frederic Rentsch > wrote: > > Hi all, > > > > > > I'd like to log MySQL errors. If I do: > > > > try: (command) > > except MySQLdb.OperationalError, e: print e > > > > I may get something like: > > > > (1136, "Column count doesn't match value count at row 1") > > > > If I don't know in advance which error to expect, but on the contrary > > want to find out which error occurred, I can catch any error by omitting > > the name: > > > > except: (handle) > > > > But now I don't have access to the error message 'e'. I'm sure there's a > > way and it's probably ridiculously simple. > > except Exception, e: (or, in Py3, except Exception as e is prefereed). > > Note that you should generally avoid bare except statements "except:" > as that will catch everything, including KeyboardInterrupt and > SystemExit which may not be desirable. > > Even without saving the exception in the except statement, you can get > the type, value, and traceback with the sys.exc_info command. See > http://docs.python.org/library/sys.html#sys.exc_info > > For example: > > py>import sys > py>try: > py> raise RuntimeError > py> except: > py> print sys.exc_info() > py> > (, RuntimeError(), at 0x0000000002371588>) Chris, Thanks very much! Great help! Frederic