Re: exception handling in complex Python programs

2008-08-27 Thread Bruno Desthuilliers
Lie a écrit : On Aug 21, 12:59 am, Steven D'Aprano <[EMAIL PROTECTED] cybersource.com.au> wrote: On Wed, 20 Aug 2008 09:23:22 -0700, [EMAIL PROTECTED] wrote: On Aug 19, 4:12 pm, Steven D'Aprano <[EMAIL PROTECTED] cybersource.com.au> wrote: On Tue, 19 Aug 2008 11:07:39 -0700, [EMAIL PROTECTED]

RE: exception handling in complex Python programs

2008-08-24 Thread Delaney, Timothy (Tim)
Lie wrote: > Ah... now I understand what the Zen is talking about when it said: > "Now is better then never, although never is often better than *right* > now." If you don't have all the necessary resources to fix an > exception right now, don't try to fix it, instead let it propagate, > and allow

Re: exception handling in complex Python programs

2008-08-22 Thread Gabriel Genellina
En Thu, 21 Aug 2008 14:48:45 -0300, magloca <[EMAIL PROTECTED]> escribió: Bruno Desthuilliers @ Thursday 21 August 2008 17:31: Java's "checked exception" system has proven to be a total disaster. Could you elaborate on that? I'm not disagreeing with you (or agreeing, for that matter); I'd

Re: exception handling in complex Python programs

2008-08-22 Thread Maric Michaud
Le Friday 22 August 2008 15:03:21 Bruno Desthuilliers, vous avez écrit : > Maric Michaud a écrit : > > Le Thursday 21 August 2008 09:34:47 Bruno Desthuilliers, vous avez écrit : > >>> The point > >>> is that EAFP conflicts with the interest of reporting errors as soon > >>> as possible (on which mu

Re: exception handling in complex Python programs

2008-08-22 Thread Wojtek Walczak
On Fri, 22 Aug 2008 06:43:58 -0700 (PDT), Lie wrote: > I think we should change except: into expect:, it would confuse less, > would it? It signifies that the program expects so and so kinds of > exceptional situations. The try: should also be changed to... perhaps > in:, block:, onthiscode:, etc

Re: exception handling in complex Python programs

2008-08-22 Thread Lie
On Aug 21, 2:34 pm, Bruno Desthuilliers wrote: > [EMAIL PROTECTED] a écrit : > > > > > On Aug 19, 4:12 pm, Steven D'Aprano <[EMAIL PROTECTED] > > cybersource.com.au> wrote: > >> On Tue, 19 Aug 2008 11:07:39 -0700, [EMAIL PROTECTED] wrote: > >>>   def do_something(filename): > >>>     if not os.acc

Re: exception handling in complex Python programs

2008-08-22 Thread Bruno Desthuilliers
Maric Michaud a écrit : Le Thursday 21 August 2008 09:34:47 Bruno Desthuilliers, vous avez écrit : The point is that EAFP conflicts with the interest of reporting errors as soon as possible (on which much has been written see, for instance Ch. 8 - Defensive Programming in Code Complete), Defens

Re: exception handling in complex Python programs

2008-08-22 Thread Lie
On Aug 21, 12:59 am, Steven D'Aprano <[EMAIL PROTECTED] cybersource.com.au> wrote: > On Wed, 20 Aug 2008 09:23:22 -0700, [EMAIL PROTECTED] wrote: > > On Aug 19, 4:12 pm, Steven D'Aprano <[EMAIL PROTECTED] > > cybersource.com.au> wrote: > >> On Tue, 19 Aug 2008 11:07:39 -0700, [EMAIL PROTECTED] wrot

Re: exception handling in complex Python programs

2008-08-22 Thread Maric Michaud
Le Thursday 21 August 2008 09:34:47 Bruno Desthuilliers, vous avez écrit : > > The point > > is that EAFP conflicts with the interest of reporting errors as soon > > as possible (on which much has been written see, for instance Ch. 8 - > > Defensive Programming in Code Complete), > > Defensive prog

Re: exception handling in complex Python programs

2008-08-22 Thread magloca
Bruno Desthuilliers @ Thursday 21 August 2008 22:54: > magloca a écrit : >> Bruno Desthuilliers @ Thursday 21 August 2008 17:31: >> > If you mean "the exceptions *explicitely raised* by your code", > then I agree. But with any generic enough code, documenting any > possible exception

Re: exception handling in complex Python programs

2008-08-21 Thread eliben
On Aug 19, 7:34 pm, "Chris Mellon" <[EMAIL PROTECTED]> wrote: > On Tue, Aug 19, 2008 at 12:19 PM, eliben <[EMAIL PROTECTED]> wrote: > > Python provides a quite good and feature-complete exception handling > > mechanism for its programmers. This is good. But exceptions, like any > > complex construc

Re: exception handling in complex Python programs

2008-08-21 Thread eliben
> Here is an example from a Django web app: when there is a bug, a > generic Exception is thrown and Django catches it and reports a > beautifully formatted stack trace. When something must be reported to > the user, a MyAppException is thrown (not the real name). The HTTP > request handler for the

Re: exception handling in complex Python programs

2008-08-21 Thread [EMAIL PROTECTED]
On Aug 20, 10:13 pm, Steven D'Aprano <[EMAIL PROTECTED] cybersource.com.au> wrote: > It might not be enjoyable to have a sarcastic remark directed your way, > but it isn't a personal attack. Just because a comment is about something > you do doesn't make it a personal attack. Personal attacks are a

Re: exception handling in complex Python programs

2008-08-21 Thread Bruno Desthuilliers
magloca a écrit : Bruno Desthuilliers @ Thursday 21 August 2008 17:31: If you mean "the exceptions *explicitely raised* by your code", then I agree. But with any generic enough code, documenting any possible exception that could be raised by lower layers, objects passed in as arguments etc is j

Re: exception handling in complex Python programs

2008-08-21 Thread magloca
Bruno Desthuilliers @ Thursday 21 August 2008 17:31: >>> If you mean "the exceptions *explicitely raised* by your code", then >>> I agree. But with any generic enough code, documenting any possible >>> exception that could be raised by lower layers, objects passed in as >>> arguments etc is just p

Re: exception handling in complex Python programs

2008-08-21 Thread Bruno Desthuilliers
eliben a écrit : On Aug 21, 12:40 pm, Bruno Desthuilliers wrote: eliben a écrit :> On Aug 19, 7:19 pm, eliben <[EMAIL PROTECTED]> wrote: (snip) """ Document the exceptions thrown by your code """ If you mean "the exceptions *explicitely raised* by your code", then I agree. But with any gene

Re: exception handling in complex Python programs

2008-08-21 Thread eliben
On Aug 21, 12:40 pm, Bruno Desthuilliers wrote: > eliben a écrit :> On Aug 19, 7:19 pm, eliben <[EMAIL PROTECTED]> wrote: > >> Python provides a quite good and feature-complete exception handling > > > > > Thanks for the interesting discussion. Armed by the new information > > and few online sour

Re: exception handling in complex Python programs

2008-08-21 Thread eliben
> >http://eli.thegreenplace.net/2008/08/21/robust-exception-handling/ > > Just a few random points. You say: > > "Exceptions are better than returning error status codes. Some languages > (like Python) leave you with no choice as the whole language core and > standard libraries throw exceptions." >

Re: exception handling in complex Python programs

2008-08-21 Thread Bruno Desthuilliers
eliben a écrit : On Aug 19, 7:19 pm, eliben <[EMAIL PROTECTED]> wrote: Python provides a quite good and feature-complete exception handling Thanks for the interesting discussion. Armed by the new information and few online sources, I blogged a summary for myself on the topic of robust excepti

Re: exception handling in complex Python programs

2008-08-21 Thread Steven D'Aprano
On Thu, 21 Aug 2008 00:34:21 -0700, eliben wrote: > On Aug 19, 7:19 pm, eliben <[EMAIL PROTECTED]> wrote: >> Python provides a quite good and feature-complete exception handling > > > Thanks for the interesting discussion. Armed by the new information and > few online sources, I blogged a summar

Re: exception handling in complex Python programs

2008-08-21 Thread Bruno Desthuilliers
[EMAIL PROTECTED] a écrit : (snip) Here is an example: a simple query tool for a tiny "mock SQL" relational database. With a method (called "select_all") you can perform the equivalent of a select query on the database. The contents of the query are specified with triples of the form [field, com

Re: exception handling in complex Python programs

2008-08-21 Thread Bruno Desthuilliers
[EMAIL PROTECTED] a écrit : On Aug 19, 4:12 pm, Steven D'Aprano <[EMAIL PROTECTED] cybersource.com.au> wrote: On Tue, 19 Aug 2008 11:07:39 -0700, [EMAIL PROTECTED] wrote: def do_something(filename): if not os.access(filename,os.R_OK): return err(...) f = open(filename) ...

Re: exception handling in complex Python programs

2008-08-21 Thread eliben
On Aug 19, 7:19 pm, eliben <[EMAIL PROTECTED]> wrote: > Python provides a quite good and feature-complete exception handling Thanks for the interesting discussion. Armed by the new information and few online sources, I blogged a summary for myself on the topic of robust exception handling in Pyth

Re: exception handling in complex Python programs

2008-08-20 Thread Richard Levasseur
One common-place thing I've noticed in a lot of python code is that every package or module has a main Error class, and all sub-types inherit from that class. So you just catch mylib.Error, and you're going to catch all the exceptions that package generates directly. There seems to be a lot of co

Re: exception handling in complex Python programs

2008-08-20 Thread Gabriel Genellina
En Wed, 20 Aug 2008 21:49:14 -0300, [EMAIL PROTECTED] <[EMAIL PROTECTED]> escribió: > On Aug 20, 10:59 am, Steven D'Aprano <[EMAIL PROTECTED] > cybersource.com.au> wrote: >> Oh goodie. Another programmer who goes out of his way to make it hard for >> other programmers, by destroying duck-typing.

Re: exception handling in complex Python programs

2008-08-20 Thread Steven D'Aprano
On Wed, 20 Aug 2008 17:49:14 -0700, [EMAIL PROTECTED] wrote: > On Aug 20, 10:59 am, Steven D'Aprano <[EMAIL PROTECTED] > cybersource.com.au> wrote: >> Oh goodie. Another programmer who goes out of his way to make it hard >> for other programmers, by destroying duck-typing. > > Remember kids: pers

Re: exception handling in complex Python programs

2008-08-20 Thread [EMAIL PROTECTED]
On Aug 20, 10:59 am, Steven D'Aprano <[EMAIL PROTECTED] cybersource.com.au> wrote: > Oh goodie. Another programmer who goes out of his way to make it hard for > other programmers, by destroying duck-typing. Remember kids: personal attacks are cruise control for cool. So this was a simplification

Re: exception handling in complex Python programs

2008-08-20 Thread Marc 'BlackJack' Rintsch
On Wed, 20 Aug 2008 18:37:02 +0200, Bruno Desthuilliers wrote: >> I personally think this is sloppy because you have to couple the >> exception type with the function --- between file() and open() in >> Python 2 and 3, a NameError is thrown with open() in Python 3 > > ??? I suspect this has nothi

Re: exception handling in complex Python programs

2008-08-20 Thread Steven D'Aprano
On Wed, 20 Aug 2008 09:23:22 -0700, [EMAIL PROTECTED] wrote: > On Aug 19, 4:12 pm, Steven D'Aprano <[EMAIL PROTECTED] > cybersource.com.au> wrote: >> On Tue, 19 Aug 2008 11:07:39 -0700, [EMAIL PROTECTED] wrote: >> >   def do_something(filename): >> >     if not os.access(filename,os.R_OK): >> >  

Re: exception handling in complex Python programs

2008-08-20 Thread Rafe
On Aug 20, 12:47 am, Fredrik Lundh <[EMAIL PROTECTED]> wrote: > Rafe wrote: > > Again, this is probably too simple to help, but the only way to ignore > > certain types of exceptions, as far as I know, is to catch them and > > pass. > > e.g. this ignores type errors... > > > try: > > somethingB

Re: exception handling in complex Python programs

2008-08-20 Thread Bruno Desthuilliers
eliben a écrit : This is *exactly* my concern with Python exceptions. You just never know what can be thrown at you. This rarely happen to be a problem in real life. At least not in mine. Exception that can be expected (ie : IOError when dealing with files) are usually obvious and more or le

Re: exception handling in complex Python programs

2008-08-20 Thread Bruno Desthuilliers
[EMAIL PROTECTED] a écrit : On Aug 19, 10:19 am, eliben <[EMAIL PROTECTED]> wrote: P.S. There's a common case where a method is passed a filename, to do something with a file (say, read data). Should the method catch the errors possibly thrown by open(), or leave it to the caller ? You want t

Re: exception handling in complex Python programs

2008-08-20 Thread [EMAIL PROTECTED]
On Aug 19, 4:12 pm, Steven D'Aprano <[EMAIL PROTECTED] cybersource.com.au> wrote: > On Tue, 19 Aug 2008 11:07:39 -0700, [EMAIL PROTECTED] wrote: > >   def do_something(filename): > >     if not os.access(filename,os.R_OK): > >       return err(...) > >     f = open(filename) > >     ... > > You're

Re: exception handling in complex Python programs

2008-08-20 Thread Steven D'Aprano
On Tue, 19 Aug 2008 22:24:45 -0700, eliben wrote: > """ between file() > and open() in Python 2 and 3, a NameError is thrown with open() in > Python 3 and an IOError is thrown in the other three cases against keyboard>. > """ I'm curious about the claim that open() will raise NameError in Python

Re: exception handling in complex Python programs

2008-08-20 Thread Marc 'BlackJack' Rintsch
On Tue, 19 Aug 2008 22:24:45 -0700, eliben wrote: >> You want to look up Easier to Ask Forgivness than Permission (EAFP) >> which is touted as the "canonical" error-handling paradigm for Python. > > Any (semi)complete guides on this canonical paradigm online ? I've only > found some references in

Re: exception handling in complex Python programs

2008-08-19 Thread eliben
""" between file() and open() in Python 2 and 3, a NameError is thrown with open() in Python 3 and an IOError is thrown in the other three cases . """ This is *exactly* my concern with Python exceptions. You just never know what can be thrown at you. > You want to look up Easier to Ask Forgivness

Re: exception handling in complex Python programs

2008-08-19 Thread Steven D'Aprano
On Tue, 19 Aug 2008 11:07:39 -0700, [EMAIL PROTECTED] wrote: > def do_something(filename): > if not os.access(filename,os.R_OK): > return err(...) > f = open(filename) > ... You're running on a multitasking modern machine, right? What happens when some other process deletes

Re: exception handling in complex Python programs

2008-08-19 Thread [EMAIL PROTECTED]
On Aug 19, 10:19 am, eliben <[EMAIL PROTECTED]> wrote: > P.S. There's a common case where a method is passed a filename, to do > something with a file (say, read data). Should the method catch the > errors possibly thrown by open(), or leave it to the caller ? You want to look up Easier to Ask Fo

Re: exception handling in complex Python programs

2008-08-19 Thread Fredrik Lundh
Rafe wrote: Again, this is probably too simple to help, but the only way to ignore certain types of exceptions, as far as I know, is to catch them and pass. e.g. this ignores type errors... try: somethingBad() except TypeError, err: pass except Exception, err: raise TypeError(err)

Re: exception handling in complex Python programs

2008-08-19 Thread Rafe
On Aug 20, 12:19 am, eliben <[EMAIL PROTECTED]> wrote: > Python provides a quite good and feature-complete exception handling > mechanism for its programmers. This is good. But exceptions, like any > complex construct, are difficult to use correctly, especially as > programs get large. > > Most of

Re: exception handling in complex Python programs

2008-08-19 Thread Chris Mellon
On Tue, Aug 19, 2008 at 12:19 PM, eliben <[EMAIL PROTECTED]> wrote: > Python provides a quite good and feature-complete exception handling > mechanism for its programmers. This is good. But exceptions, like any > complex construct, are difficult to use correctly, especially as > programs get large.

exception handling in complex Python programs

2008-08-19 Thread eliben
Python provides a quite good and feature-complete exception handling mechanism for its programmers. This is good. But exceptions, like any complex construct, are difficult to use correctly, especially as programs get large. Most of the issues of exceptions are not specific to Python, but I sometim