Exception Handling Practices / Patterns

frank.ruiz at gmail.com frank.ruiz at gmail.com
Sat Aug 24 19:30:39 EDT 2013


Appreciate the feedback. I was hoping to get as much perspective as possible. 

On Saturday, August 24, 2013 12:18:59 AM UTC-7, Dave Angel wrote:
> snarf wrote:
> 
> 
> 
> > Greetings,
> 
> >
> 
> > As I tread through my journey of OO I am trying to determine if there is a good approach for exception handling within classes.
> 
> >
> 
> > From my readings and gatherings - it seems I have found a common theme, but I am trying to solicit from the experts.
> 
> >
> 
> > Here is what I have found (I may be restating the obvious so please forgive me in advance):
> 
> >
> 
> > * Seems like exception handing within Classes is largely avoided and is typically only used when calling external libraries.
> 
> > * Try/Except type statements seem to be used more within modules, main functions, wrapper scripts.
> 
> 
> 
> Exceptions are used when useful.  I don't see any bias towards any one
> 
> location.
> 
> 
> 
> > * Classes should be coded in a way that exceptions 
> 
> 
> 
> You seem to be missing the last part of this sentence.
> 
> 
> 
> > * Better to never write your own exceptions (unless you absolutely have to).
> 
> 
> 
> If you mean to avoid writing exception classes, then I say nonsense. 
> 
> Just derive them from the closest meaningful exception class, so that a
> 
> user can combine handlers when reasonable.
> 
> 
> 
> > * Using Exception is typically a bad. More specific the better.
> 
> 
> 
> If you mean in an except statement, then I'd agree.
> 
> 
> 
> > * Exceptions should never fail silently. (Should exceptions always be logged?)
> 
> 
> 
> Exceptions should be caught if you can handle them, or if you need to
> 
> convert them to a different exception that someone further up the stack
> 
> can handle.  Sometimes handling means do nothing.
> 
> 
> 
> >
> 
> > Best site I have found for exceptions (hopefully this helps someone):
> 
> > * http://c2.com/cgi/wiki?ExceptionPatterns
> 
> 
> 
> But that's for Java.  java is not C++, and neither is it Python.  For
> 
> one thing, Python exception overhead is deliberately much less, and they
> 
> are used more freely.
> 
> 
> 
> Notice that exceptions are used to terminate for loops, and that's a
> 
> *normal* exit to the loop.  They also appear in other places under the
> 
> covers.  Don't be afraid of them.
> 
> 
> 
> -- 
> 
> DaveA




More information about the Python-list mailing list