- my $svc_x = $self->h_svc_x(@_)
- or die "can't find h_". $self->part_svc->svcdb. '.svcnum '. $self->svcnum;
- $self->_svc_label($svc_x, @_);
+ my $svc_x = $self->h_svc_x(@_);
+ my $part_svc = $self->part_svc;
+
+ unless ($svc_x) {
+ carp "can't find h_". $self->part_svc->svcdb. '.svcnum '. $self->svcnum if $DEBUG;
+ return $part_svc->svc, 'n/a', $part_svc->svcdb;
+ }
+
+ my @label;
+ eval { @label = $self->_svc_label($svc_x, @_); };
+
+ if ($@) {
+ carp 'while resolving history record for svcdb/svcnum ' .
+ $part_svc->svcdb . '/' . $self->svcnum . ': ' . $@ if $DEBUG;
+ return $part_svc->svc, 'n/a', $part_svc->svcdb;
+ } else {
+ return @label;
+ }
+