Implemented better exceptions
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2019-10-31 13:26:56 +01:00
parent ffba5fb24c
commit 65f814b006
9 changed files with 55 additions and 11 deletions

View File

@@ -0,0 +1,18 @@
#ifndef CREATURELIB_CREATUREEXCEPTION_HPP
#define CREATURELIB_CREATUREEXCEPTION_HPP
#include <exception>
#include <string>
class CreatureException : std::exception{
std::string _error;
public:
CreatureException(std::string error){}
const char *what() const noexcept override {
return _error.c_str();
}
};
#endif //CREATURELIB_CREATUREEXCEPTION_HPP

View File

@@ -0,0 +1,12 @@
#ifndef CREATURELIB_NOTIMPLEMENTEDEXCEPTION_HPP
#define CREATURELIB_NOTIMPLEMENTEDEXCEPTION_HPP
#include "CreatureException.hpp"
class NotImplementedException : CreatureException{
public:
NotImplementedException(std::string error) : CreatureException(error){}
NotImplementedException() : CreatureException("Not Implemented"){}
};
#endif //CREATURELIB_NOTIMPLEMENTEDEXCEPTION_HPP

View File

@@ -0,0 +1,11 @@
#ifndef CREATURELIB_NOTREACHABLEEXCEPTION_HPP
#define CREATURELIB_NOTREACHABLEEXCEPTION_HPP
#include "CreatureException.hpp"
class NotReachableException : CreatureException{
public:
NotReachableException() : CreatureException("Not Reachable"){};
};
#endif //CREATURELIB_NOTREACHABLEEXCEPTION_HPP

View File

@@ -4,6 +4,7 @@
#include <exception>
#include "Statistic.hpp"
#include "../GenericTemplates.cpp"
#include "Exceptions/NotReachableException.hpp"
namespace CreatureLib::Core{
template <class T>
@@ -41,7 +42,7 @@ namespace CreatureLib::Core{
case MagicalDefense: return _magicalDefense;
case Speed: return _speed;
}
throw std::exception();
throw NotReachableException();
}
inline void SetStat(Statistic stat, T value){
@@ -53,7 +54,7 @@ namespace CreatureLib::Core{
case MagicalDefense: _magicalDefense = value;
case Speed: _speed = value;
}
throw std::exception();
throw NotReachableException();
}
inline void IncreaseStatBy(Statistic stat, T amount){
@@ -65,7 +66,7 @@ namespace CreatureLib::Core{
case MagicalDefense: _magicalDefense += amount;
case Speed: _speed += amount;
}
throw std::exception();
throw NotReachableException();
}
inline void DecreaseStatBy(Statistic stat, T amount){
switch (stat){
@@ -76,7 +77,7 @@ namespace CreatureLib::Core{
case MagicalDefense: _magicalDefense -= amount;
case Speed: _speed -= amount;
}
throw std::exception();
throw NotReachableException();
}
};
}