[Koha-patches] [PATCH] bug_6433: exception handling
Srdjan Janković
srdjan at catalyst.net.nz
Tue May 31 05:27:42 CEST 2011
---
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 c9590c2..958a479 100755
--- 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 );
@@ -2665,6 +2668,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 5be01cf..6710224 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
--
1.7.2.5
More information about the Koha-patches
mailing list