#ifndef _MUSSA_EXCEPTIONS_H_
#define _MUSSA_EXCEPTIONS_H_
#include <stdexcept>
+#include <boost/filesystem/exception.hpp>
-//! Error processing commandline arguments
-class cmdline_error : public std::runtime_error
+//! base mussa exception
+class mussa_error : public std::runtime_error
{
public:
- explicit cmdline_error(const std::string& msg): std::runtime_error(msg) {};
+ explicit mussa_error(const std::string& msg): std::runtime_error(msg) {};
};
+//! Error processing commandline arguments
+class cmdline_error : public mussa_error
+{
+public:
+ explicit cmdline_error(const std::string& msg): mussa_error(msg) {};
+};
+//! Error trying to save
+class mussa_save_error : public mussa_error
+{
+public:
+ explicit mussa_save_error(const std::string& msg) :
+ mussa_error(msg) {};
+};
//! Error loading information
-class mussa_load_error : public std::runtime_error
+class mussa_load_error : public mussa_error
{
public:
explicit mussa_load_error(const std::string& msg) :
- std::runtime_error(msg) {};
+ mussa_error(msg) {};
+};
+
+//! Error loading sequence
+class sequence_load_error : public mussa_load_error
+{
+public:
+ explicit sequence_load_error(const std::string& msg) :
+ mussa_load_error(msg) {};
+};
+
+// Empty sequence
+class sequence_empty_error : public sequence_load_error
+{
+public:
+ explicit sequence_empty_error(const std::string& msg) :
+ sequence_load_error(msg) {};
+};
+
+// Empty fasta file
+class sequence_empty_file_error : public sequence_load_error
+{
+public:
+ explicit sequence_empty_file_error(const std::string& msg) :
+ sequence_load_error(msg) {};
+};
+
+// Empty unrecognized characters
+class sequence_invalid_load_error : public sequence_load_error
+{
+public:
+ explicit sequence_invalid_load_error(const std::string& msg) :
+ sequence_load_error(msg) {};
+};
+
+//! Error loading sequence annotation
+class annotation_load_error : public sequence_load_error
+{
+public:
+ explicit annotation_load_error(const std::string& msg) :
+ sequence_load_error(msg) {};
};
//! failure running analysis
-class mussa_analysis_error : public std::runtime_error
+class mussa_analysis_error : public mussa_error
{
public:
explicit mussa_analysis_error(const std::string& msg) :
- std::runtime_error(msg) {};
+ mussa_error(msg) {};
+};
+
+//! failure running seqcomp
+class seqcomp_error : public mussa_analysis_error
+{
+public:
+ explicit seqcomp_error(const std::string& msg) :
+ mussa_analysis_error(msg) {};
};
-class motif_normalize_error : public std::runtime_error
+//! couldn't normalize a motif
+/*
+class motif_normalize_error : public mussa_error
{
public:
explicit motif_normalize_error(const std::string& msg) :
- std::runtime_error(msg) {};
+ mussa_error(msg) {};
+};
+*/
+
+//! something went wrong loading a motif
+class motif_load_error : public mussa_load_error
+{
+public:
+ explicit motif_load_error(const std::string& msg) :
+ mussa_load_error(msg) {};
+};
+
+//! ConservedPath::nextTo had two paths that weren't the same size
+class conserved_path_size_mismatch : public mussa_error
+{
+public:
+ explicit conserved_path_size_mismatch(const std::string& msg) :
+ mussa_error(msg) {};
};
#endif