aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2010-01-20 03:43:31 +0100
committerAlexander Sulfrian <alexander@sulfrian.net>2013-01-05 17:17:45 +0100
commit22aa1302d76342c7c4b56b7380734a7f984e7411 (patch)
treea75880a07b4c32967bc01d3e2d39231f6054d4e3
parentc139750658c14e8e0a2621044473810027486f50 (diff)
downloadusdx-22aa1302d76342c7c4b56b7380734a7f984e7411.tar.gz
usdx-22aa1302d76342c7c4b56b7380734a7f984e7411.tar.xz
usdx-22aa1302d76342c7c4b56b7380734a7f984e7411.zip
added custom exception classes for better catching them (gotta catch 'em all)
-rw-r--r--src/base/song.cpp8
-rw-r--r--src/base/song.hpp8
-rw-r--r--src/base/songloading/songloader.cpp4
-rw-r--r--src/base/songloading/songloader.hpp8
-rw-r--r--src/utils/base_exception.cpp44
-rw-r--r--src/utils/base_exception.hpp49
6 files changed, 115 insertions, 6 deletions
diff --git a/src/base/song.cpp b/src/base/song.cpp
index 3d825bf4..4185d51b 100644
--- a/src/base/song.cpp
+++ b/src/base/song.cpp
@@ -108,7 +108,7 @@ namespace usdx
}
else if (required) {
LOG4CXX_ERROR(log, "Incomplete Song! Missing '" << tag << "' Tag in: '" << get_filename() << "'");
- throw "Incomplete Song! Missing Tag.";
+ throw MissingSongTagException("Incomplete Song! Missing Tag.");
}
return result;
@@ -125,7 +125,7 @@ namespace usdx
}
else if (required) {
LOG4CXX_ERROR(log, "Incomplete Song! Missing '" << tag << "' Tag in: '" << get_filename() << "'");
- throw "Incomplete Song! Missing Tag.";
+ throw MissingSongTagException("Incomplete Song! Missing Tag.");
}
return result;
@@ -143,7 +143,7 @@ namespace usdx
}
else if (required) {
LOG4CXX_ERROR(log, "Incomplete Song! Missing '" << tag << "' Tag in: '" << get_filename() << "'");
- throw "Incomplete Song! Missing Tag.";
+ throw MissingSongTagException("Incomplete Song! Missing Tag.");
}
return result;
@@ -164,7 +164,7 @@ namespace usdx
}
else if (required) {
LOG4CXX_ERROR(log, "Incomplete Song! Missing '" << tag << "' Tag in: '" << get_filename() << "'");
- throw "Incomplete Song! Missing Tag.";
+ throw MissingSongTagException("Incomplete Song! Missing Tag.");
}
return result;
diff --git a/src/base/song.hpp b/src/base/song.hpp
index d7ed8c98..6009cfa9 100644
--- a/src/base/song.hpp
+++ b/src/base/song.hpp
@@ -33,9 +33,17 @@
#include <log4cxx/logger.h>
#include "bpm.hpp"
#include "lyric_line.hpp"
+#include "utils/base_exception.hpp"
namespace usdx
{
+ class MissingSongTagException : public BaseException
+ {
+ public:
+ MissingSongTagException(std::string message) : BaseException(message) {};
+ ~MissingSongTagException () throw () {};
+ };
+
class Song
{
private:
diff --git a/src/base/songloading/songloader.cpp b/src/base/songloading/songloader.cpp
index 0b1e34ad..c5c595d4 100644
--- a/src/base/songloading/songloader.cpp
+++ b/src/base/songloading/songloader.cpp
@@ -74,7 +74,7 @@ namespace usdx
std::map<std::string, SongloadingStrategy*>::iterator it = strategies.find(extension);
if (it == strategies.end()) {
LOG4CXX_WARN(log, "No SongloadingStrategy found for file extension: '" << extension << "'");
- throw "Unknown file format.";
+ throw NoStrategyException("Unknown file format.");
}
return it->second->load_header(filename);
@@ -92,7 +92,7 @@ namespace usdx
std::map<std::string, SongloadingStrategy*>::iterator it = strategies.find(extension);
if (it == strategies.end()) {
LOG4CXX_WARN(log, "No SongloadingStrategy found for file extension: '" << extension << "'");
- throw "Unknown file format.";
+ throw NoStrategyException("Unknown file format.");
}
return it->second->load_song(song);
diff --git a/src/base/songloading/songloader.hpp b/src/base/songloading/songloader.hpp
index 41f7e034..bbe7dfcb 100644
--- a/src/base/songloading/songloader.hpp
+++ b/src/base/songloading/songloader.hpp
@@ -31,9 +31,17 @@
#include <log4cxx/logger.h>
#include "songloading_strategy.hpp"
#include "song.hpp"
+#include "utils/base_exception.hpp"
namespace usdx
{
+ class NoStrategyException : public BaseException
+ {
+ public:
+ NoStrategyException(std::string message) : BaseException(message) {};
+ ~NoStrategyException () throw () {};
+ };
+
class Songloader
{
private:
diff --git a/src/utils/base_exception.cpp b/src/utils/base_exception.cpp
new file mode 100644
index 00000000..e00ba716
--- /dev/null
+++ b/src/utils/base_exception.cpp
@@ -0,0 +1,44 @@
+/*
+ * UltraStar Deluxe - Karaoke Game
+ *
+ * UltraStar Deluxe is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ */
+
+#include "base_exception.hpp"
+
+namespace usdx
+{
+ BaseException::BaseException(std::string message) : message(message)
+ {
+ }
+
+ BaseException::~BaseException () throw ()
+ {
+ }
+
+ const char* BaseException::what() const throw()
+ {
+ return message.c_str();
+ }
+
+};
diff --git a/src/utils/base_exception.hpp b/src/utils/base_exception.hpp
new file mode 100644
index 00000000..44f3c2b7
--- /dev/null
+++ b/src/utils/base_exception.hpp
@@ -0,0 +1,49 @@
+/*
+ * UltraStar Deluxe - Karaoke Game
+ *
+ * UltraStar Deluxe is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ */
+
+#ifndef BASE_MESSAGE_EXCEPTIONS_HPP
+#define BASE_MESSAGE_EXCEPTIONS_HPP
+
+#include <string>
+#include <exception>
+
+namespace usdx
+{
+ class BaseException : public std::exception
+ {
+ private:
+ std::string message;
+
+ protected:
+ BaseException(std::string message);
+
+ public:
+ ~BaseException() throw ();
+ virtual const char* what() const throw();
+ };
+};
+
+#endif