meshlab/src/common/mlexception.h
2016-06-04 16:22:37 +00:00

95 lines
2.4 KiB
C++

#ifndef ML_EXCEPTION_H
#define ML_EXCEPTION_H
#include <exception>
class MLException : public std::exception
{
public:
MLException(const QString& text)
:std::exception(),excText(text){_ba = excText.toLocal8Bit();}
~MLException() throw() {}
inline const char* what() const throw() {return _ba.constData();}
protected:
QString excText;
QByteArray _ba;
};
class MeshLabXMLParsingException : public MLException
{
public:
MeshLabXMLParsingException(const QString& text)
:MLException(QString("Error While parsing the XML filter plugin descriptors: ") + text){}
~MeshLabXMLParsingException() throw() {}
};
class ParsingException : public MLException
{
public:
ParsingException(const QString& text)
:MLException(QString("Parsing Error: ") + text){}
~ParsingException() throw() {}
};
class ValueNotFoundException : public MLException
{
public:
ValueNotFoundException(const QString& valName)
:MLException(QString("Value Name: ") + valName + QString(" has not been defined in current environment.")){}
~ValueNotFoundException() throw() {}
};
class NotConstException : public MLException
{
public:
NotConstException(const QString& exp)
:MLException(QString("Expression: ") + exp + QString(" is not a const expression. Expression contains an assignment operator \"=\".")){}
~NotConstException() throw() {}
};
class QueryException : public MLException
{
public:
QueryException(const QString& syntaxError)
:MLException(QString("Query Error: ") + syntaxError){}
~QueryException() throw() {}
};
class JavaScriptException : public MLException
{
public:
JavaScriptException(const QString& syntaxError)
:MLException(QString("JavaScript Error: ") + syntaxError){}
~JavaScriptException() throw() {}
};
class ExpressionHasNotThisTypeException : public MLException
{
public:
ExpressionHasNotThisTypeException(const QString& expectedType,const QString& exp)
:MLException(QString("Expression: ") + exp + " cannot be evaluated to a " + expectedType + "'s value."){}
~ExpressionHasNotThisTypeException() throw() {}
};
class InvalidInvariantException : public MLException
{
public:
InvalidInvariantException(const QString& invarianterror)
:MLException(QString("WARNING! Invalid Invariant: ") + invarianterror){}
~InvalidInvariantException() throw() {}
};
#endif