Files
Timed-Altarica-To-Fiacre-Tr…/src/commons/Exception.cc
2018-12-06 16:01:56 +01:00

255 lines
6.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*******************************************************************************
* Copyright (c) 2015-2016 ONERA.
* Ce logiciel est la propriété de lONERA (the French Aerospace Lab).
* Tous droits réservés.
*
* Ce programme et les éléments qui l'accompagnent sont mis à disposition
* aux conditions définies par le contrat de licence logiciel CeCILL-C soumise
* au droit français et respectant les principes de diffusion des logiciels libres.
* Vous pouvez utiliser, modifier et/ou redistribuer ce programme
* sous les conditions de la licence CeCILL-C (http://www.cecill.info).
* This software is property of ONERA (the French Aerospace Lab).
* All rights reserved.
*
* This program and the accompanying materials are made available under
* the terms of the CeCILL-C license under French law and
* abiding by the rules of distribution of free software.
* You can use, modify and/ or redistribute the software under the terms of
* the CeCILL-C license (http://www.cecill.info).
*
* Contributeurs/contributors:
* Guillaume Infantes (ONERA - Centre de Toulouse) - initial API and implementation
*
*******************************************************************************/
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Library General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
// Copyright Florent Teichteil-Koenigsbuch (2008)
#include "Exception.hh"
using namespace epoch;
// Class Exception
Exception::Exception(std::string const & error_message, std::string const & throwing_function)
: error_message_(error_message)
{
if (!throwing_function.empty())
function_backtrace_ = std::string(" from '") + throwing_function + "':\n";
}
Exception::~Exception() throw()
{
}
const char * Exception::what() const throw()
{
what_message_ = std::string("HMDP exception:\n") + function_backtrace_ + " " + error_message_;
return what_message_.c_str();
}
void Exception::push_function_backtrace(std::string const & throwing_function)
{
function_backtrace_.insert(0, std::string(" from '") + throwing_function + "':\n");
}
void Exception::clear_function_backtrace()
{
function_backtrace_.clear();
}
// Class ParserException
ParserException::ParserException(std::string const & error_message, std::string const & throwing_function)
: Exception("HMDP parser exception: ", throwing_function)
{
error_message_ += error_message;
}
ParserException::~ParserException() throw()
{
}
// Class RequirementException
RequirementException::RequirementException(std::string const & error_message, std::string const & throwing_function)
: ParserException("HMDP requirement exception: ", throwing_function)
{
error_message_ += error_message;
}
RequirementException::~RequirementException() throw()
{
}
// Class OverflowException
OverflowException::OverflowException(std::string const & error_message, std::string const & throwing_function)
: Exception("HMDP overflow exception: ", throwing_function)
{
error_message_ += error_message;
}
OverflowException::~OverflowException() throw()
{
}
// Class NumericException
NumericException::NumericException(std::string const & error_message, std::string const & throwing_function)
: Exception("HMDP numeric exception: ", throwing_function)
{
error_message_ += error_message;
}
NumericException::~NumericException() throw()
{
}
// Class RedundancyException
RedundancyException::RedundancyException(std::string const & error_message, std::string const & throwing_function)
: Exception("HMDP redundancy exception: ", throwing_function)
{
error_message_ += error_message;
}
RedundancyException::~RedundancyException() throw()
{
}
// Class CloneException
CloneException::CloneException(std::string const & error_message, std::string const & throwing_function)
: Exception("HMDP clone exception: ", throwing_function)
{
error_message_ += error_message;
}
CloneException::~CloneException() throw()
{
}
// Class LearnerException
LearnerException::LearnerException(std::string const & error_message, std::string const & throwing_function)
: Exception("HMDP learner exception: ", throwing_function)
{
error_message_ += error_message;
}
LearnerException::~LearnerException() throw()
{
}
// Class UndecidableException
UndecidableException::UndecidableException(std::string const & error_message, std::string const & throwing_function)
: LearnerException("HMDP learner exception (undecidable inference): ", throwing_function)
{
error_message_ += error_message;
}
UndecidableException::~UndecidableException() throw()
{
}
// Class PlannerException
PlannerException::PlannerException(std::string const & error_message, std::string const & throwing_function)
: Exception("HMDP planner exception: ", throwing_function)
{
error_message_ += error_message;
}
PlannerException::~PlannerException() throw()
{
}
// Class TimeOutException
TimeOutException::TimeOutException(std::string const & error_message, std::string const & throwing_function)
: PlannerException("HMDP timeout exception: ", throwing_function)
{
error_message_ += error_message;
}
TimeOutException::~TimeOutException() throw()
{
}
// Class IncompatibilityException
IncompatibilityException::IncompatibilityException(std::string const & error_message, std::string const & throwing_function)
: Exception("HMDP incompatibility exception: ", throwing_function)
{
error_message_ += error_message;
}
IncompatibilityException::~IncompatibilityException() throw()
{
}