Thread Argumente/Parameter wo prüfen ? (19 answers)
Opened by der_thomas at 2014-09-15 18:44

rosti
 2014-09-18 22:07
#177372 #177372
User since
2011-03-19
3472 Artikel
BenutzerIn
[Homepage]
user image
Quote
D.h. der Code der Methode wird nicht weiter ausgeführt, es passiert einfach nichts...Richtig so ?


Jaha, Du hast es ;)
Also: Ab der Stelle, wo eine Exception fällt (croak, die, confess) hält das Script an. Passiert das in einem eval-Block, wird die Exception aufgefangen, Meldung (Begründung) in $@ und Du kannst außerhalb vom eval-Block entscheiden, wie es weitergehen könnte.

Noch ein schönes Beispiel für die Objekterstellung:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Konstruktor einer Klasse
sub new{
   my $class = shift; # Name der Klasse
   # Argumente in @_ z.B. als Hash
   # hier können wir default-Werte setzen
   # da ist auch gleich zu sehen, was fakt ist
   my %cfg = (
      foo => undef,
      bar => '',
   @_);
   # @_ überschreibt die vorbelegten Werte
   # Pflichtfelder setzen wir auf undef

   return eval{
      # Argumente prüfen
      # wenn was nicht passt, Exception schmeißen
      # code hierzu...
      my $self = bless{
        # Attribute
        foo => $cfg{foo} or croak "foo wurde nicht übergeben",
      }, $class;

      # letzte Zeile im Block ist der returnvalü
      $self; # das wird zurückgegeben, wenn alles geklappt hat
   };
}

# und draußen...
  my $obj = Class->new(%argumente) || do{
     # hier machen wir das, was notwendig ist, wenn
     # das Objekt nicht erstellt werden konnte
     # Reason in $@
  };

Last edited: 2014-09-18 22:11:15 +0200 (CEST)

View full thread Argumente/Parameter wo prüfen ?