21#ifndef KI_EXCEPTION_H_
22#define KI_EXCEPTION_H_
35#define THROW_IO_ERROR( msg ) throw IO_ERROR( msg, __FILE__, __FUNCTION__, __LINE__ )
36#define THROW_IO_ERRORF( msg, ... ) throw IO_ERROR( wxString::Format( msg, __VA_ARGS__ ), \
37 __FILE__, __FUNCTION__, __LINE__ )
56 const wxString
What()
const
86 IO_ERROR(
const wxString& aProblem,
const char* aThrowersFile,
87 const char* aThrowersFunction,
int aThrowersLineNumber )
89 init( aProblem, aThrowersFile, aThrowersFunction, aThrowersLineNumber );
95 void init(
const wxString& aProblem,
const char* aThrowersFile,
96 const char* aThrowersFunction,
int aThrowersLineNumber );
98 virtual const wxString Problem()
const;
99 virtual const wxString Where()
const;
101 virtual const char* what()
const throw() override;
102 virtual const wxString What() const;
123 IO_CANCELLED(
const char* aThrowersFile,
const char* aThrowersFunction,
int aThrowersLineNumber,
124 const wxString& aProblem = wxEmptyString );
128#define THROW_IO_CANCELLED() throw IO_CANCELLED( __FILE__, __FUNCTION__, __LINE__ )
130#define THROW_IO_CANCELLED_MSG( msg ) throw IO_CANCELLED( __FILE__, __FUNCTION__, __LINE__, msg )
156 const char* aThrowersFunction,
int aThrowersLineNumber,
157 const wxString& aSource,
const char* aInputLine,
158 int aLineNumber,
int aByteIndex ) :
161 init( aProblem, aThrowersFile, aThrowersFunction, aThrowersLineNumber,
162 aSource, aInputLine, aLineNumber, aByteIndex );
165 void init(
const wxString& aProblem,
const char* aThrowersFile,
166 const char* aThrowersFunction,
int aThrowersLineNumber,
167 const wxString& aSource,
const char* aInputLine,
168 int aLineNumber,
int aByteIndex );
186#define THROW_PARSE_ERROR( aProblem, aSource, aInputLine, aLineNumber, aByteIndex ) \
187 throw PARSE_ERROR( aProblem, __FILE__, __FUNCTION__, __LINE__, aSource, aInputLine, \
188 aLineNumber, aByteIndex )
202 const wxString& aRequiredGenerator = wxEmptyString );
204 const wxString& aRequiredGenerator = wxEmptyString );
207 void init(
const wxString& aRequiredVersion,
208 const wxString& aRequiredGenerator = wxEmptyString );
IO_CANCELLED(const char *aThrowersFile, const char *aThrowersFunction, int aThrowersLineNumber, const wxString &aProblem=wxEmptyString)
Normally thrown via the macro THROW_IO_CANCELLED(), which supplies the call-site file,...
void init(const wxString &aProblem, const char *aThrowersFile, const char *aThrowersFunction, int aThrowersLineNumber)
IO_ERROR(const wxString &aProblem, const char *aThrowersFile, const char *aThrowersFunction, int aThrowersLineNumber)
Use macro THROW_IO_ERROR() to wrap a call to this constructor at the call site.
KI_PARAM_ERROR(const wxString &aMessage)
Constructor.
const wxString What() const
virtual ~KI_PARAM_ERROR()
int lineNumber
at which line number, 1 based index.
const wxString ParseProblem()
std::string inputLine
problem line of input [say, from a LINE_READER].
PARSE_ERROR(const wxString &aProblem, const char *aThrowersFile, const char *aThrowersFunction, int aThrowersLineNumber, const wxString &aSource, const char *aInputLine, int aLineNumber, int aByteIndex)
Normally called via the macro THROW_PARSE_ERROR so that FILE, FUNCTION, and LINE can be captured from...
int byteIndex
at which byte offset within the line, 1 based index
void init(const wxString &aProblem, const char *aThrowersFile, const char *aThrowersFunction, int aThrowersLineNumber, const wxString &aSource, const char *aInputLine, int aLineNumber, int aByteIndex)