You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

You want to handle fatal errors (assertions) yourself rather than have the library call abort()

Step-by-step guide

When there is an assertion failure, the library first checks whether the user has defined his/her own assertion handling mechanism. If not, it prints a message and calls abort. This is the default behaviour. But you can override this in the following way using the C API:

  1. Define a function with the following signature:

    typedef void (*codes_assertion_failed_proc)(const char* message);
  2. Then call

    codes_set_codes_assertion_failed_proc(&your_function);
  3. Now the library will call the chosen function (which for example could do nothing or throw a C++ exception) instead of the abort.
  4. To restore the default behaviour, call

    codes_set_codes_assertion_failed_proc(NULL);

Example

static void my_assertion_proc(const char* message)
{
    printf("It's OK. I caught the assertion: %s\n", message);
    // Do something else
}

codes_set_codes_assertion_failed_proc(&my_assertion_proc);
// Do lots of experimental stuff knowing all asserts will be caught

// Now restore default behaviour
codes_set_codes_assertion_failed_proc(NULL);




  • No labels