00001 /* errorhandler.cc - Decide if a Xapian::Error exception should be ignored. 00002 * 00003 * Copyright (C) 2006,2007 Olly Betts 00004 * 00005 * This program is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU General Public License as 00007 * published by the Free Software Foundation; either version 2 of the 00008 * License, or (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License 00016 * along with this program; if not, write to the Free Software 00017 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00018 */ 00019 00020 #include <config.h> 00021 00022 #include <xapian/error.h> 00023 #include <xapian/errorhandler.h> 00024 00025 Xapian::ErrorHandler::~ErrorHandler() { } 00026 00027 void 00028 Xapian::ErrorHandler::operator()(Xapian::Error & error) 00029 { 00030 bool already_handled = error.already_handled; 00031 error.already_handled = true; 00032 if (already_handled || !handle_error(error)) { 00033 throw error; 00034 } 00035 }