Praktischer Anwendungsleitfaden
Shell-Interaktion mit Statuscodes
Überprüfen des Rückgabestatus
$ ./myprogram
$ echo $? ## Prints the last program's exit status
Strategien zur Fehlerbehandlung
Benutzerdefinierte Fehlercodes
#define SUCCESS 0
#define FILE_ERROR 10
#define NETWORK_ERROR 20
int main() {
if (file_operation_fails()) {
return FILE_ERROR;
}
if (network_connection_fails()) {
return NETWORK_ERROR;
}
return SUCCESS;
}
Workflow der Statuscodes
graph TD
A[Program Execution] --> B{Status Code}
B --> |0| C[Shell: Continue]
B --> |Non-zero| D[Shell: Handle Error]
Integration in Skripten
Fehlerbehandlung in Bash
#!/bin/bash
./myprogram
if [ $? -ne 0 ]; then
echo "Program failed with error"
## Additional error handling
fi
Best Practices
Praxis |
Beschreibung |
Beispiel |
Sinnvolle Codes verwenden |
Definieren Sie spezifische Fehlerzustände |
#define DB_CONNECTION_FAILED 50 |
Codes dokumentieren |
Erklären Sie jeden Statuscode |
Kommentare, die die Fehlerbedingungen erklären |
Konsistente Zuordnung |
Standardisieren Sie die Fehlerbehandlung |
Verwenden Sie vordefinierte Fehlerbereiche |
Empfehlung von LabEx
Bei der Entwicklung in LabEx erstellen Sie eine zentrale Header-Datei für Fehlercodes:
// error_codes.h
#ifndef ERROR_CODES_H
#define ERROR_CODES_H
#define SUCCESS 0
#define INVALID_INPUT 1
#define MEMORY_ALLOCATION_FAILED 2
// Add more specific error codes
#endif
Fortgeschrittene Fehlerberichterstattung
#include <stdio.h>
#include <stdlib.h>
enum ErrorCodes {
SUCCESS = 0,
FILE_NOT_FOUND = 10,
PERMISSION_DENIED = 11
};
int main() {
FILE *file = fopen("nonexistent.txt", "r");
if (!file) {
perror("Error opening file");
return FILE_NOT_FOUND;
}
return SUCCESS;
}
Wichtige Erkenntnisse
- Statuscodes bieten einen Kommunikationsmechanismus.
- Verwenden Sie spezifische, sinnvolle Rückgabewerte.
- Integrieren Sie die Fehlerbehandlung in Shell-Skripts.
- Dokumentieren und standardisieren Sie die Fehlercodes.