Thread FastCGI/FCGI - Error-Routine (20 answers)
Opened by Froschpopo at 2012-03-12 15:58

rosti
 2012-03-12 19:37
#156798 #156798
User since
2011-03-19
3219 Artikel
BenutzerIn
[Homepage]
user image
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