C itself doesn't support exceptions but you can simulate them to a degree with setjmp and longjmp calls.

static jmp_buf s_jumpBuffer;

void Example() { 
  if (setjmp(s_jumpBuffer)) {
    // The longjmp was executed and returned control here
    printf("Exception happened here\n");
  } else {
    // Normal code execution starts here

void Test() {
  // Rough equivalent of `throw`
  longjmp(s_jumpBuffer, 42);

This website has a nice tutorial on how to simulate exceptions with setjmp and longjmp