exceptions.h
Go to the documentation of this file.
00001 /* Copyright (C) 2015-2018 Michele Colledanchise -  All Rights Reserved
00002  * Copyright (C) 2018-2019 Davide Faconti, Eurecat -  All Rights Reserved
00003 *
00004 *   Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
00005 *   to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
00006 *   and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
00007 *   The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
00008 *
00009 *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00010 *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
00011 *   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00012 */
00013 
00014 #ifndef BT_EXCEPTIONS_H
00015 #define BT_EXCEPTIONS_H
00016 
00017 #include <string>
00018 #include <stdexcept>
00019 #include "utils/strcat.hpp"
00020 
00021 namespace BT
00022 {
00023 class BehaviorTreeException : public std::exception
00024 {
00025   public:
00026 
00027     BehaviorTreeException(nonstd::string_view message):  message_(message.to_string())
00028     {}
00029 
00030     template <typename... SV>
00031     BehaviorTreeException(const SV&... args): message_(StrCat (args...))
00032     { }
00033 
00034 
00035     const char* what() const noexcept
00036     {
00037         return message_.c_str();
00038     }
00039 
00040   private:
00041     std::string message_;
00042 };
00043 
00044 // This errors are usually related to problems that "probably" require code refactoring
00045 // to be fixed.
00046 class LogicError: public BehaviorTreeException
00047 {
00048   public:
00049     LogicError(nonstd::string_view message):  BehaviorTreeException(message)
00050     {}
00051 
00052     template <typename... SV>
00053     LogicError(const SV&... args): BehaviorTreeException(args...)
00054     { }
00055 
00056 };
00057 
00058 // This errors are usually related to problems that are relted to data or conditions
00059 // that happen only at run-time
00060 class RuntimeError: public BehaviorTreeException
00061 {
00062   public:
00063     RuntimeError(nonstd::string_view message):  BehaviorTreeException(message)
00064     {}
00065 
00066     template <typename... SV>
00067     RuntimeError(const SV&... args): BehaviorTreeException(args...)
00068     { }
00069 };
00070 
00071 
00072 }
00073 
00074 #endif


behaviortree_cpp
Author(s): Michele Colledanchise, Davide Faconti
autogenerated on Sat Jun 8 2019 20:17:15