Thread Warum kein $@ statt $! (29 answers)
Opened by rosti at 2014-09-23 13:04

rosti
 2015-01-12 09:43
#179175 #179175
User since
2011-03-19
3197 Artikel
BenutzerIn
[Homepage]
user image
2015-01-12T07:32:06 Muffi
Naja, wenn du schon eine zusätzliche Abstraktionsschicht für ini-einlesen einführst, dann doch konsequenterweise auch für die Fehlerbehandlung.


hi danke, ja, wir können das Auslagern von Methoden als Abstraktion bezeichnen. Meine Fehlerbehandlung hat jedoch mit Abstraktion nichts zut tun, sie ist eine Vereinbarung:

Code (perl): (dl )
1
2
3
4
5
6
# Es wird der Erfolg einer Methodenausführung festgestellt
my $result = $instanz->methode(ARGS)
  or return $instanz->fehlerseite(FEHLERGRUND);
  # or die "FEHLERGRUND";
  # or die $@;
  # or return $instanz->fehlerseite($@);


Wobei zur Fehlerbehandlung hinzukommt: Das was der Benutzer zu sehen bekommt, ist es eine fehlerhafte Eingabe oder ist es höhere Gewalt. Und diese beiden Dinge können bereits während der Entwicklung einer Klasse einfließen, was letztendlich die Entwicklung der Endanwendung erleichtert: or return $instanz->fehlerseite($@);

Hier war der Entwickler faul:
Code (perl): (dl )
   my $sca = Scaliger->new(date => "1.1.$year") or die $@;


Und das ist das Result einer fehlerhaften Benutzereingabe für das Jahr: http://rolfrost.de/eqyear.html?year=9999
Es kann jedoch einen Grund geben, es so zu machen: Für Bots gibt es keine Links mehr denen sie folgen könnten. Diese Art der Fehlerbehandlung (Exception werfen) setzt natürlich voraus, dass sämtliche Aktionen in einem try-Block laufen...

View full thread Warum kein $@ statt $!