From 3423d19d9979aa9efaacd2f1df13134aa1cb08ba Mon Sep 17 00:00:00 2001 From: =?utf8?q?Srdjan=20Jankovi=C4=87?= Date: Tue, 31 May 2011 15:18:21 +1200 Subject: [PATCH] bug_6433: exception handling Signed-off-by: Magnus Enger (cherry picked from commit 5829cef6d837cee4fddb0b917520206c86518d06) Signed-off-by: Chris Nighswonger --- C4/Biblio.pm | 4 ++++ misc/migration_tools/rebuild_zebra.pl | 25 +++++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/C4/Biblio.pm b/C4/Biblio.pm index 016b53d98b..d797f40563 100644 --- a/C4/Biblio.pm +++ b/C4/Biblio.pm @@ -21,6 +21,7 @@ package C4::Biblio; use strict; use warnings; +use Carp; # use utf8; use MARC::Record; @@ -294,6 +295,8 @@ and biblionumber data for indexing. sub ModBiblio { my ( $record, $biblionumber, $frameworkcode ) = @_; + croak "No record" unless $record; + if ( C4::Context->preference("CataloguingLog") ) { my $newrecord = GetMarcBiblio($biblionumber); logaction( "CATALOGUING", "MODIFY", $biblionumber, "BEFORE=>" . $newrecord->as_formatted ); @@ -2667,6 +2670,7 @@ per the bib's MARC framework. sub EmbedItemsInMarcBiblio { my ($marc, $biblionumber) = @_; + croak "No MARC record" unless $marc; my $frameworkcode = GetFrameworkCode($biblionumber); _strip_item_fields($marc, $frameworkcode); diff --git a/misc/migration_tools/rebuild_zebra.pl b/misc/migration_tools/rebuild_zebra.pl index 5be01cff63..6710224430 100755 --- a/misc/migration_tools/rebuild_zebra.pl +++ b/misc/migration_tools/rebuild_zebra.pl @@ -351,8 +351,13 @@ sub export_marc_records_from_sth { # strung together with no single root element. zebraidx doesn't seem # to care, though, at least if you're using the GRS-1 filter. It does # care if you're using the DOM filter, which requires valid XML file(s). - print OUT ($as_xml) ? $marc->as_xml_record(C4::Context->preference('marcflavour')) : $marc->as_usmarc(); - $num_exported++; + eval { + print OUT ($as_xml) ? $marc->as_xml_record(C4::Context->preference('marcflavour')) : $marc->as_usmarc(); + $num_exported++; + }; + if ($@) { + warn "Error exporting record $record_number ($record_type) ".($noxml ? "not XML" : "XML"); + } } } print "\nRecords exported: $num_exported\n" if ( $verbose_logging ); @@ -449,15 +454,19 @@ sub get_raw_marc_record { $fetch_sth->execute($record_number); if (my ($blob) = $fetch_sth->fetchrow_array) { $marc = MARC::Record->new_from_usmarc($blob); - $fetch_sth->finish(); - } else { - return; # failure to find a bib is not a problem - - # a delete could have been done before - # trying to process a record update + unless ($marc) { + warn "error creating MARC::Record from $blob"; + } } + # failure to find a bib is not a problem - + # a delete could have been done before + # trying to process a record update + + $fetch_sth->finish(); + return unless $marc; } else { eval { $marc = GetMarcBiblio($record_number); }; - if ($@) { + if ($@ || !$marc) { # here we do warn since catching an exception # means that the bib was found but failed # to be parsed -- 2.20.1