CTR: Benutzereingabe in data mit Try::Tiny auffangen
authorJan Büren <jan@kivitendo.de>
Fri, 1 Jan 2021 17:00:59 +0000 (18:00 +0100)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Wed, 5 May 2021 15:25:03 +0000 (17:25 +0200)
Sinnvolle Fehlermeldung in  einem Satz zurückgeben und
danach den kompletten Trace.

SL/BackgroundJob/ConvertTimeRecordings.pm
SL/InstallationCheck.pm

index 6af9ae9..810d9bc 100644 (file)
@@ -8,7 +8,9 @@ use SL::DB::DeliveryOrder;
 use SL::DB::TimeRecording;
 
 use SL::Locale::String qw(t8);
+
 use DateTime;
+use Try::Tiny;
 
 sub create_job {
   $_[0]->create_standard_job('7 3 1 * *'); # every first day of month at 03:07
@@ -31,8 +33,13 @@ sub run {
   # from/to date from data. Defaults to begining and end of last month.
   my $from_date;
   my $to_date;
-  $from_date   = DateTime->from_kivitendo($data->{from_date}) if $data->{from_date};
-  $to_date     = DateTime->from_kivitendo($data->{to_date})   if $data->{to_date};
+  # handle errors with a catch handler
+  try {
+    $from_date   = DateTime->from_kivitendo($data->{from_date}) if $data->{from_date};
+    $to_date     = DateTime->from_kivitendo($data->{to_date})   if $data->{to_date};
+  } catch {
+    die "Cannot convert date from string $data->{from_date} $data->{to_date}\n Details :\n $_"; # not $@
+  };
   $from_date ||= DateTime->new( day => 1,    month => DateTime->today_local->month, year => DateTime->today_local->year)->subtract(months => 1);
   $to_date   ||= DateTime->last_day_of_month(month => DateTime->today_local->month, year => DateTime->today_local->year)->subtract(months => 1);
 
index aeac4e5..5ac4adf 100644 (file)
@@ -62,6 +62,7 @@ BEGIN {
   { name => "Text::CSV_XS",    version => '0.23',  url => "http://search.cpan.org/~hmbrand/",   debian => 'libtext-csv-xs-perl' },
   { name => "Text::Iconv",     version => '1.2',   url => "http://search.cpan.org/~mpiotr/",    debian => 'libtext-iconv-perl' },
   { name => "Text::Unidecode",                     url => "http://search.cpan.org/~sburke/",    debian => 'libtext-unidecode-perl' },
+  { name => "Try::Tiny",                           url => "https://metacpan.org/release/Try-Tiny",  debian => 'libtry-tiny-perl' },
   { name => "URI",             version => '1.35',  url => "http://search.cpan.org/~gaas/",      debian => 'liburi-perl' },
   { name => "XML::LibXML",                         url => "https://metacpan.org/pod/XML::LibXML", debian => 'libxml-libxml-perl' },
   { name => "XML::Writer",     version => '0.602', url => "http://search.cpan.org/~josephw/",   debian => 'libxml-writer-perl' },