siema jeszcze jeden dylemat na dzisiaj. Czy obsługuje się w C niezaplanowane mało prawdopodobne błędy? Tzn gdy w jakieś funkcji wystąpi błąd, który uniemożliwia dalsze działanie programu można dać exit(EXIT_FAILURE); olewając niepozamykane rzeczy, niezwolnioną pamięć itd... czy może trzeba to wszystko obsłużyć? np. zwracając z funkcji czy się udało i w funkcji, która to wywołała obsłużyć (tj. zwolnić pamięć, wszystko pozamykać (deskryptory, sysloga itd...) itd...)? jak wy to robicie hmm? poniżej prosty przykład o co mi chodzi
/* zwracam czy się udało czy nie i w funkcji, która to wywołała obsługuję */
int f1(const char *jakis_string, struct costam *costam) {
char *sfp = strdup(jakis_string);
if(!sfp) {
fprintf(stderr, "can't allocate memory in f1\n");
return 0;
}
costam->jakis_string = sfp;
return 1;
}
/* nieobsłguję tylko zamykam hamsko program */
void f2(const char *jakis_string, struct costam *costam) {
char *sfp = strdup(jakis_string);
if(!sfp) {
fprintf(stderr, "can't allocate memory in f2\n");
exit(EXIT_FAILURE);
}
costam->jakis_string = sfp;
}
/* wgl nie przewiduję takiego scenariusza */
void f3(const char *jakis_string, struct costam *costam) {
costam->jakis_string = strdup(jakis_string);
}
Pozdrawiam