1
0
forked from cheng/wallet
wallet/ILog.h

89 lines
2.5 KiB
C++

#pragma once
extern int errorCode;
extern std::string szError;
void ILogFatalError(const char*);
void ILogError(const char*);
void ILogWarning(const char*);
void ILogMessage(const char* format);
void ILogVerbose(const char*);
void ILogDebug(const char*);
void queue_error_message(const char*); //Used for error conditions within a destructor because you cannot throw within a destructor
void queue_fatal_error(const char*); //Used for fatal error conditions within a destructor in place of FatalException because you cannot throw within a destructor
class MyException: public std::exception {
private:
std::string err;
public:
virtual ~MyException() override = default;
MyException() = delete;
explicit MyException(const std::string &m) noexcept :err(m){}
explicit MyException(const char* sz) noexcept :err(sz) {}
virtual const char* what() const override {
return err.c_str();
}
};
class FatalException : public MyException {
public:
using MyException::MyException;
FatalException() noexcept;
};
class HashReuseException : public MyException {
public:
using MyException::MyException;
HashReuseException() noexcept;
};
class SQLexception : public MyException {
public:
using MyException::MyException;
SQLexception() noexcept;
};
class NonUtf8DataInDatabase : public MyException {
public:
using MyException::MyException;
NonUtf8DataInDatabase() noexcept;
};
class BadDataException : public MyException {
public:
using MyException::MyException;
BadDataException() noexcept;
};
class NonRandomScalarException : public MyException {
public:
using MyException::MyException;
NonRandomScalarException() noexcept;
};
class BadScalarException : public MyException {
public:
using MyException::MyException;
BadScalarException() noexcept;
};
class OversizeBase58String : public MyException {
public:
using MyException::MyException;
OversizeBase58String() noexcept;
};
// This exception is obviously far too generic, because the routine throwing it knows nothing of the context.
// does not know what the cryptographic id identifies.
// higher level code that does know the context needs to catch the exception and issue a more
// relevant errror message, possibly with by more informative rethrow.
class BadStringRepresentationOfCryptoIdException : public MyException {
public:
using MyException::MyException;
BadStringRepresentationOfCryptoIdException() noexcept;
};
class NotBase58Exception : public MyException {
public:
using MyException::MyException;
NotBase58Exception() noexcept;
};