On Thu, 13 Nov 2008 17:11:26 -0800, Emanuele D'Arrigo wrote: > I'm pondering on what is a bit of a philosophical dilemma. When should I > throw an exception and when should I not? > > Suppose I have myFunc1() calling myFunc2() which in turn calls myFunc3 > (). > Suppose myFunc3() has detected a problem. What should it do? > > Throw an exception, forcing myFunc2() to handle it and/or trigger > another exception for myFunc1() to deal with? Or should it simply return > a meaningful error code, for myFunc2() and myFunc1() to handle as an > option but not forcing them to do so?
In general, you should raise an exception. Then if myFunc2() can't handle it, it doesn't need to trigger another exception, the exception will just propagate up the call chain to myFunc1(). There are cases where something like a meaningful error value is appropriate, but the only one I can think of right now is NaN in floating point maths. -- Steven -- http://mail.python.org/mailman/listinfo/python-list