capypad
0 Tage Serie
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
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.