Thread FastCGI/FCGI - Error-Routine
(20 answers)
Opened by Froschpopo at 2012-03-12 15:58
Es läuft so:
Beim Einbinden meines Moduls (Response) mit use werden alle Methoden kompiliert (außer diejenigen, welche für AutoLoader vorgesehen sind), damit liegt deren CODE im Hauptspeicher. UNIVERSAL::can wird über die Instanz der Response-Klasse aufgerufen (innerhalb der Klasse: $self), vereinfacht dargestellt: Code (perl): (dl
)
$code = $self->can('foo'); Womit der CODE von Methode 'foo' oder auch der CODE von Methode 'bar' und aller anderer Methoden CODE stets in $code referenziert ist. Nun wird mit eval{} auf Exception geprüft und $@ abgefragt. Code (perl): (dl
)
1 2 3 4 5 eval{ $self->$code }; if($@){ $self->{CONTENT} = $@; # eigene Fehlermeldung aus die("Eingabefehler: ..."); } Jetzt haben wir die Fehlermeldung in $self->{CONTENT} und da eine Exception nur einmal auftritt, braucht es hier kein Array. $self->{CONTENT} wird später in die zu erzeugende Response eingebaut, i.d.R. wird damit der Body komplett ausgetauscht. View full thread FastCGI/FCGI - Error-Routine |