[Python-de] Re: Problem mit einer Schleife

holger krekel pyth at devel.trillke.net
Fri Sep 27 17:20:01 EDT 2002


Andreas Grytz wrote:
> On Fri, Sep 27, 2002 at 02:46:29PM +0200, holger krekel wrote:
> > Andreas Grytz wrote:
> > > On Fri, Sep 27, 2002 at 11:48:20AM +0000, Gerhard Häring wrote:
> > > > Andreas Grytz wrote:
> > > > > Jetzt passiert folgendes: Die Abfrage beendet sich erst, wenn ich drei
> > > > > mal hintereinander "q" eingebe. Hat jemand daür eine Erklärung?
> > > > 
> > > > Mit q springst du aus einer Rekursionsebene hinaus. Du hast aber scheinbar
> > > > vorher schon zwei Mal getURL() aufgerufen.
> > > 
> > > *die Hand vor den Schaedel schlag*
> > > 
> > > Umpf, na klar. Vielen Dank für die Erleuchtung.
> > 
> > Wenn du uebrigens aus einer Rekursion direkt ausbrechen willst, 
> > kannst du auch den Exception-Mechanismus nutzen:
> > 
> >     class BailOut(Exception):
> >         """ 'Exception' Class signalling end Recursion """
> >         pass
> > 
> > und dann tief in einer Rekursion:
> > 
> >     raise BailOut, "eine message"
> > 
> > und dann natuerlich auf der start-ebene:
> > 
> >     except BailOut, obj:
> >         print "program finished", obj
> > 
> Das ist natürlich schoen, wenn man moechte, dass das Programm m Falle
> eines Abbruchs etwas von sich gibt. Aber das war hier garnicht
> notwendig. Das Programmläuft nach dem Abbruch einfach in die nächste
> Funktion weiter.

nach dem fangen einer exception muss das program nicht 
zwangsweise verlassen werden :-) 

def func():
    try:
        call_recursive_function(...)
    except BailOut, obj:
        pass

natuerlich kannst du an das BailOut-objekt noch interessante
infos dranhaengen..

gruss,

    holger




More information about the Python-de mailing list