Thread "Exception handling" Frage
(10 answers)
Opened by Kuerbis at 2012-06-17 08:41 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 use Carp; my %allowed_keys; my %allowed_values; sub function { my ( $arrayref, $hashref ) = @_; croak 'First Argument has to be an Arrayref' if !defined $arrayref or ref $arrayref ne 'ARRAY'; my %hash=( ... ); # vordefiniert if ( defined $hashref ) { croak 'Second Argument has to be an Hashref' if ref $hashref ne 'HASH' # test keys und values my @not_allowed_keys=grep{ !$allowed_keys{$_} }keys(%$hashref); my @not_allowed_vals=grep{ !$allowed_values{$_} }values(%$hashref); carp 'Ignoring Keys :'.join( ', ', @not_allowed_keys ) if @not_allowed_keys; carp 'Ignoring Values :'.join( ', ', @not_allowed_vals ) if @not_allowed_values; %hash=map { $_ => $hashref->{$_} } grep{ $allowed_values{ $hashref->{$_} } } grep{ $allowed_keys{$_} } keys %$hashref ; } my @return; ... ... return @return; } Wenn du erklärst was schief läuft ist das in Ordnung. In der Doku sollte nur beschrieben sein dass du croak benutzt. Und du solltest dabei konsequent sein. Wenn eine Funktion auch ohne eine Option läuft, du es aber für wichtig hältst das sie genutzt wird, dann ist ein carp angebracht. Du kannst auch Fehlercodes Zurück liefern. Das ist Günstig wenn eine Aktion wiederholt werden kann. Das gilt z.B für Interaktionen mit dem System, anderen Programmen, Servern oder Nutzern.
|