kzs_error.hpp File Reference

Error handling functions. More...

#include <boost/preprocessor/cat.hpp>
#include <kanzi/core/debug/assert.hpp>
#include <kanzi/core/legacy/kzs_types.hpp>
#include <kanzi/core/cpp/string_view.hpp>

Classes

class  kanzi::detail::StringLogger
 Stores log messages in a string for later retreival by error reporting subsystem. More...
 

Namespaces

 kanzi
 
 kanzi::detail
 

Macros

#define KZS_EXCEPTION_MESSAGE_MAXIMUM_LENGTH
 Maximum length of exception. More...
 
#define KZS_SUCCESS
 Success code. More...
 
#define KZS_ERROR_ASSERTION_FAILED
 Assertion failed. More...
 
#define KZS_ERROR_NOT_IMPLEMENTED_YET
 Functionality is not yet implemented. More...
 
#define KZS_ERROR_ENUM_OUT_OF_RANGE
 Invalid value for enum. More...
 
#define KZS_ERROR_ILLEGAL_OPERATION
 Trying to perform illegal operation. More...
 
#define KZS_ERROR_ILLEGAL_ARGUMENT
 An argument was invalid for the given context. More...
 
#define KZS_ERROR_MALFORMED_DATA
 Data is malformed. More...
 
#define KZS_ERROR_ARRAY_OUT_OF_BOUNDS
 Trying to access array with invalid index. More...
 
#define KZS_ERROR_INVALID_STATE
 Program is in invalid state. More...
 
#define KZ_LOG_CATEGORY_LEGACY_EXCEPTIONS
 
#define kzsSuccess()
 Return from the function without any error code. More...
 
#define KZ_UNIQUE_NAME_INTERNAL(name)
 
#define KZ_APPEND_MESSAGE_TO_STRING_LOGGER_INTERNAL(logger, logMessage)
 
#define KZ_REPORT_ERROR_INTERNAL(new_error, logMessage)
 
#define KZ_REPORT_EXCEPTION_INTERNAL(error, logMessage)
 
#define kzsErrorThrow(new_error, logMessage)
 Return from the function with the given error code. More...
 
#define kzsExceptionThrow(new_exception, logMessage)
 Return from the function with the given exception code. More...
 
#define kzsExceptionRethrow(param_exception)
 Return from the function with the given exception code. More...
 
#define kzsErrorTest(test, new_error, logMessage)
 Return from the function with the given error code, if the test is false. More...
 
#define kzsExceptionTest(test, new_exception, logMessage)
 Return from the function with the given exception code, if the test is false. More...
 
#define kzsErrorForward(error)
 Return from the function with the given error code, if it is one. More...
 
#define kzsExceptionForward(exception)
 Return from the function with the given exception or error code, if it is one. More...
 
#define kzsExceptionForwardAsError(exception, new_error, logMessage)
 If the given exception code is an error, pass it forward. More...
 
#define kzsErrorSubstitute(error, new_error, logMessage)
 Return from the function with the given new error code, if the given old code is also an error. More...
 
#define kzsExceptionSubstitute(error, new_exception, logMessage)
 Return from the function with the given new exception code, if the given old code is also an exception. More...
 
#define kzsErrorIf(error)
 Test if the given error is an error. More...
 
#define kzsExceptionCatch(exception, exception_code)
 Test if the given exception matches the specified exception code. More...
 
#define kzsExceptionCatchAll(exception)
 Test if the given exception is an actual exception and not success or error. More...
 
#define KZS_NOT_IMPLEMENTED_YET
 Macro to use to indicate that some code is not yet implemented. More...
 
#define KZS_NOT_IMPLEMENTED_YET_ERROR
 Macro to use to indicate and throw error that some code is not yet implemented. More...
 
#define KZS_NOT_IMPLEMENTED_YET_ERROR_TEXT(message)
 Macro to use to indicate and throw error with an explanation, that some code is not yet implemented. More...
 
#define kzsErrorLog(errorCode, message)
 Logs the given error code with given message. More...
 
#define kzsExceptionLog(errorCode, message)
 Logs exception with given error code with given message. More...
 

Typedefs

typedef int kzsError
 Error code type definition. More...
 
typedef int kzsException
 Exception code type definition, extends error. More...
 
typedef void(* KzsErrorCallback) (kzsError errorCode, kzString message)
 Callback that is triggered in error situations. More...
 
typedef void(* KzsExceptionCallback) (kzsError errorCode, kzString message)
 Callback that is triggered in exception situations. More...
 

Functions

KANZI_API void kzsErrorThrow_private (kzsError error, kzString message)
 Wrapper for kzsErrorThrow() to share more code. More...
 
KANZI_API void kzsExceptionThrow_private (kzsError error, kzString message)
 Wrapper for kzsExceptionThrow() to share more code. More...
 
KANZI_API void kzsStoreErrorMessage (kzsError errorCode, kzString message)
 Stores error message in global storage area. More...
 
KANZI_API void kzsStoreExceptionMessage (kzString message)
 Stores exception message in per-thread data area. More...
 
KANZI_API kzsError kzsErrorInitializeThread (kzMutableString *storage)
 Initializes error handling for thread. More...
 
KANZI_API kzsError kzsErrorDeinitializeThread (void)
 De-initializes error handling for thread. More...
 
KANZI_API kzsError kzsErrorInitialize (void)
 Initialize a global variable for error message storage. More...
 
KANZI_API kzsError kzsErrorUninitialize (void)
 De-initialize a global variable for error message storage. More...
 
KANZI_API void kzsErrorSetErrorCallback (KzsErrorCallback callback)
 Sets error callback. More...
 
KANZI_API void kzsErrorSetExceptionCallback (KzsExceptionCallback callback)
 Sets exception callback. More...
 
KANZI_API kzString kzsErrorGetLastErrorMessage ()
 Gets last error message stored in a global buffer or empty string if there are no errors have being reported yet. More...
 
KANZI_API kzString kzsErrorGetLastExceptionMessage ()
 Gets the last exception message for the thread or empty string if there are no exceptions have being reported yet. More...
 
KANZI_API kzString kzsErrorGetLastExceptionMessage (kzString fallbackMessage)
 Gets the last exception message for the thread. More...
 
KANZI_API kzsError kzsErrorGetLastErrorCode ()
 Gets last error code. More...
 

Detailed Description

Error handling functions.

Copyright 2008-2017 by Rightware. All rights reserved.

Macro Definition Documentation

#define KZS_EXCEPTION_MESSAGE_MAXIMUM_LENGTH

Maximum length of exception.

#define KZS_SUCCESS

Success code.

No error.

#define KZS_ERROR_ASSERTION_FAILED

Assertion failed.

#define KZS_ERROR_NOT_IMPLEMENTED_YET

Functionality is not yet implemented.

#define KZS_ERROR_ENUM_OUT_OF_RANGE

Invalid value for enum.

#define KZS_ERROR_ILLEGAL_OPERATION

Trying to perform illegal operation.

#define KZS_ERROR_ILLEGAL_ARGUMENT

An argument was invalid for the given context.

#define KZS_ERROR_MALFORMED_DATA

Data is malformed.

#define KZS_ERROR_ARRAY_OUT_OF_BOUNDS

Trying to access array with invalid index.

#define KZS_ERROR_INVALID_STATE

Program is in invalid state.

#define KZ_LOG_CATEGORY_LEGACY_EXCEPTIONS
#define kzsSuccess ( )

Return from the function without any error code.

#define KZ_UNIQUE_NAME_INTERNAL (   name)
#define KZ_APPEND_MESSAGE_TO_STRING_LOGGER_INTERNAL (   logger,
  logMessage 
)
#define KZ_REPORT_ERROR_INTERNAL (   new_error,
  logMessage 
)
#define KZ_REPORT_EXCEPTION_INTERNAL (   error,
  logMessage 
)
#define kzsErrorThrow (   new_error,
  logMessage 
)

Return from the function with the given error code.

#define kzsExceptionThrow (   new_exception,
  logMessage 
)

Return from the function with the given exception code.

#define kzsExceptionRethrow (   param_exception)

Return from the function with the given exception code.

#define kzsErrorTest (   test,
  new_error,
  logMessage 
)

Return from the function with the given error code, if the test is false.

Otherwise continue.

#define kzsExceptionTest (   test,
  new_exception,
  logMessage 
)

Return from the function with the given exception code, if the test is false.

Otherwise continue.

#define kzsErrorForward (   error)

Return from the function with the given error code, if it is one.

If the error code is an exception, the code may or may not return (use kzsExceptionForward instead).

#define kzsExceptionForward (   exception)

Return from the function with the given exception or error code, if it is one.

Otherwise continue.

#define kzsExceptionForwardAsError (   exception,
  new_error,
  logMessage 
)

If the given exception code is an error, pass it forward.

If it is an exception, substitute it with the given error. Otherwise continue.

#define kzsErrorSubstitute (   error,
  new_error,
  logMessage 
)

Return from the function with the given new error code, if the given old code is also an error.

Otherwise continue.

#define kzsExceptionSubstitute (   error,
  new_exception,
  logMessage 
)

Return from the function with the given new exception code, if the given old code is also an exception.

Otherwise continue.

#define kzsErrorIf (   error)

Test if the given error is an error.

#define kzsExceptionCatch (   exception,
  exception_code 
)

Test if the given exception matches the specified exception code.

#define kzsExceptionCatchAll (   exception)

Test if the given exception is an actual exception and not success or error.

#define KZS_NOT_IMPLEMENTED_YET

Macro to use to indicate that some code is not yet implemented.

#define KZS_NOT_IMPLEMENTED_YET_ERROR

Macro to use to indicate and throw error that some code is not yet implemented.

#define KZS_NOT_IMPLEMENTED_YET_ERROR_TEXT (   message)

Macro to use to indicate and throw error with an explanation, that some code is not yet implemented.

#define kzsErrorLog (   errorCode,
  message 
)

Logs the given error code with given message.

#define kzsExceptionLog (   errorCode,
  message 
)

Logs exception with given error code with given message.

Typedef Documentation

typedef int kzsError

Error code type definition.

typedef int kzsException

Exception code type definition, extends error.

typedef void(* KzsErrorCallback) (kzsError errorCode, kzString message)

Callback that is triggered in error situations.

typedef void(* KzsExceptionCallback) (kzsError errorCode, kzString message)

Callback that is triggered in exception situations.

Function Documentation

KANZI_API void kzsErrorThrow_private ( kzsError  error,
kzString  message 
)

Wrapper for kzsErrorThrow() to share more code.

KANZI_API void kzsExceptionThrow_private ( kzsError  error,
kzString  message 
)

Wrapper for kzsExceptionThrow() to share more code.

KANZI_API void kzsStoreErrorMessage ( kzsError  errorCode,
kzString  message 
)

Stores error message in global storage area.

KANZI_API void kzsStoreExceptionMessage ( kzString  message)

Stores exception message in per-thread data area.

KANZI_API kzsError kzsErrorInitializeThread ( kzMutableString storage)

Initializes error handling for thread.

KANZI_API kzsError kzsErrorDeinitializeThread ( void  )

De-initializes error handling for thread.

KANZI_API kzsError kzsErrorInitialize ( void  )

Initialize a global variable for error message storage.

KANZI_API kzsError kzsErrorUninitialize ( void  )

De-initialize a global variable for error message storage.

KANZI_API void kzsErrorSetErrorCallback ( KzsErrorCallback  callback)

Sets error callback.

KANZI_API void kzsErrorSetExceptionCallback ( KzsExceptionCallback  callback)

Sets exception callback.

KANZI_API kzString kzsErrorGetLastErrorMessage ( )

Gets last error message stored in a global buffer or empty string if there are no errors have being reported yet.

KANZI_API kzString kzsErrorGetLastExceptionMessage ( )

Gets the last exception message for the thread or empty string if there are no exceptions have being reported yet.

KANZI_API kzString kzsErrorGetLastExceptionMessage ( kzString  fallbackMessage)

Gets the last exception message for the thread.

Returns fallbackMessage if are no exceptions have being reported yet.

KANZI_API kzsError kzsErrorGetLastErrorCode ( )

Gets last error code.