Panic in C

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

void panic(const char* message) {
    fprintf(stderr, "panic: %s\n", message);
    exit(1);
}

int main() {
    // We'll use panic throughout this site to check for
    // unexpected errors. This is the only program on the
    // site designed to panic.
    panic("a problem");

    // A common use of panic is to abort if a function
    // returns an error value that we don't know how to
    // (or want to) handle. Here's an example of
    // panicking if we get an unexpected error when creating a new file.
    FILE* file = fopen("/tmp/file", "w");
    if (file == NULL) {
        panic(strerror(errno));
    }

    return 0;
}

In C, we don’t have a built-in panic function like in some other languages. Instead, we’ve created a simple panic function that prints an error message to stderr and exits the program.

Running this program will cause it to panic, print an error message, and exit with a non-zero status.

$ gcc panic.c -o panic
$ ./panic
panic: a problem

When the first panic in main is called, the program exits without reaching the rest of the code. If you’d like to see the program try to create a temp file, comment out the first panic call.

Note that unlike some languages which use exceptions for handling of many errors, in C it is idiomatic to use error codes and check return values wherever possible. The panic function here is used to simulate the behavior of Go’s panic, but it’s not a standard practice in C programming.

In C, error handling typically involves checking return values from functions and using the global errno variable along with functions like perror or strerror to get more information about errors.

查看推荐产品

Comments powered by Disqus