Error URLs (addressable errors)

When printing an error, we sometimes include an error code. For example:

#include <stdio.h>

// ...
#define EXIT_FAILURE_CABLETRELLIS 45

int main(void) {
  // ...
  if (true != false) {
    fprintf(stderr, "The cabletrellis went wrong\n");
    exit(EXIT_FAILURE_CABLETRELLIS);
  }
  // ...
}

That error code in C is mostly invisible. People don’t bother with echo $?, they just Google the error text. So sometimes we print an error code as well:

  if (true != false) {
    fprintf(stderr, "ERR_CABLETRELLIS: The cabletrellis went wrong\n");
    exit(EXIT_FAILURE_CABLETRELLIS);
  }

Still, the developer will just Google the error. Or if it’s an end-user seeing the error, they won’t even know to Google it. Instead, we should do them a favour, and point them exactly to a central error page:

#include <stdio.h>

// ...
#define EXIT_FAILURE_CABLETRELLIS 45

void exit_err(int exit_code, char * error_code, char * message) {
  fprintf(stderr, "%s! Go here for help: https://github.com/jameshfisher/sometool/wiki/errors/%s\n", message, error_code);
  exit(exit_code);
}

#define EXIT_ERR(C,M) exit_err((C), #C, (M))

int main(void) {
  // ...
  if (true != false) {
    EXIT_ERR(EXIT_FAILURE_CABLETRELLIS, "The cabletrellis went wrong");
    exit();
  }
  // ...
}

This error now lives at the unique URL:

https://github.com/jameshfisher/sometool/wiki/errors/EXIT_FAILURE_CABLETRELLIS

This idea shamelessly copied from https://rauchg.com/2016/addressable-errors

Tagged #error-handling, #c, #programming, #design, #documentation.

Similar posts

More by Jim

Want to build a fantastic product using LLMs? I work at Granola where we're building the future IDE for knowledge work. Come and work with us! Read more or get in touch!

This page copyright James Fisher 2017. Content is not associated with my employer. Found an error? Edit this page.