summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAttila Molnar <attilamolnar@hush.com>2013-12-18 16:20:40 +0100
committerAttila Molnar <attilamolnar@hush.com>2013-12-18 16:20:40 +0100
commit1e8389b27ff99ad9f48c890486ebef936acafc41 (patch)
tree44543c79a89509604d2fa7b910c278476b9a0eba /include
parent0680b529874b701b20650586d8466a155d9ba0d5 (diff)
Clean up CoreException
- Remove default constructor - Replace virtual functions returning C strings with functions returning const std::string refs
Diffstat (limited to 'include')
-rw-r--r--include/base.h25
-rw-r--r--include/modules.h4
2 files changed, 14 insertions, 15 deletions
diff --git a/include/base.h b/include/base.h
index 86aa2769f..ec95342fc 100644
--- a/include/base.h
+++ b/include/base.h
@@ -179,21 +179,23 @@ class reference
*/
class CoreExport CoreException : public std::exception
{
- public:
+ protected:
/** Holds the error message to be displayed
*/
const std::string err;
/** Source of the exception
*/
const std::string source;
- /** Default constructor, just uses the error mesage 'Core threw an exception'.
- */
- CoreException() : err("Core threw an exception"), source("The core") {}
+
+ public:
/** This constructor can be used to specify an error message before throwing.
+ * @param message Human readable error message
*/
CoreException(const std::string &message) : err(message), source("The core") {}
/** This constructor can be used to specify an error message before throwing,
* and to specify the source of the exception.
+ * @param message Human readable error message
+ * @param src Source of the exception
*/
CoreException(const std::string &message, const std::string &src) : err(message), source(src) {}
/** This destructor solves world hunger, cancels the world debt, and causes the world to end.
@@ -202,17 +204,14 @@ class CoreExport CoreException : public std::exception
*/
virtual ~CoreException() throw() {};
/** Returns the reason for the exception.
- * The module should probably put something informative here as the user will see this upon failure.
+ * @return Human readable description of the error
*/
- virtual const char* GetReason()
- {
- return err.c_str();
- }
+ const std::string& GetReason() const { return err; }
- virtual const char* GetSource()
- {
- return source.c_str();
- }
+ /** Returns the source of the exception
+ * @return Source of the exception
+ */
+ const std::string& GetSource() const { return source; }
};
class Module;
diff --git a/include/modules.h b/include/modules.h
index b7cffd1a0..7ceb9f631 100644
--- a/include/modules.h
+++ b/include/modules.h
@@ -132,7 +132,7 @@ struct ModResult {
} \
catch (CoreException& modexcept) \
{ \
- ServerInstance->Logs->Log("MODULE", LOG_DEFAULT, "Exception caught: %s",modexcept.GetReason()); \
+ ServerInstance->Logs->Log("MODULE", LOG_DEFAULT, "Exception caught: " + modexcept.GetReason()); \
} \
} \
} while (0);
@@ -157,7 +157,7 @@ do { \
} \
catch (CoreException& except_ ## n) \
{ \
- ServerInstance->Logs->Log("MODULE", LOG_DEFAULT, "Exception caught: %s", (except_ ## n).GetReason()); \
+ ServerInstance->Logs->Log("MODULE", LOG_DEFAULT, "Exception caught: " + (except_ ## n).GetReason()); \
} \
} \
} while(0)