c / intermediate
Snippet
Saubere Fehlerbehandlung mit goto
Obwohl oft davon abgeraten wird, ist die Verwendung von 'goto' für die zentrale Ressourcenbereinigung ein verbreitetes Muster in der C-Programmierung. Es verhindert tief verschachtelte if-Anweisungen und stellt sicher, dass alle geöffneten Ressourcen freigegeben werden, egal wo ein Fehler auftritt.
snippet.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int process_file(const char *path) {FILE *f = fopen(path, "r");if (!f) return -1;char *buffer = malloc(1024);if (!buffer) {goto cleanup_file;}// ... process file ...free(buffer);cleanup_file:fclose(f);return 0;}
Erklärung
1
goto cleanup_file;
Springt direkt zum Cleanup-Bereich, um ein Leak des Dateihandles zu verhindern.
2
cleanup_file:
Ein Label, das den Beginn des Codes zur Ressourcenfreigabe markiert.