C - w jaki sposób obsługiwać błędy

0

mam konwerter do danych z formatu A do B oraz programy które przetwarzają później te dane

Chciałbym dla każdej funkcji w programie zwracać kod błędu jeżeli się nie powiedzie
przykład:
program wykona się dobrze 0
program wykona się nie poprawnie -1
program nie może wczytać danych bo nie istnieją -130
program nie może wczytać danych ponieważ jest błąd pliku -170
program nie może zapisać danych ponieważ nie ma uprawnień -190
program nie może zapisać danych ponieważ plik istnieje -30
program nie może odczytać metadanych -400
program nie może zapisać metadanych -500

Są przypadki gdy zwraca segmentation fault (core dumped) (nie wiem co wtedy)

Czy to dobry pomysł aby w ten sposób obsługiwać błędy?
Czy polecacie jakieś dobre praktyki do takich rzeczy?

Program jest uruchamiany za pomocą pythona i funkcji subprocess

0

Z reguly w C jesli cos sie nie powiedzie to zwracana jest wartosc ujemna a kod bledu zostaje ustawiony w errno.
Czesc podanych przez Ciebie bledow jest tez zwyczajnie w 'standardzie'. Np:

ACCES The requested access to the file is not allowed, or search
              permission is denied for one of the directories in the path
              prefix of pathname, or the file did not exist yet and write
              access to the parent directory is not allowed.  (See also
              path_resolution(7).)

Seg faulta mozna zlapac w procedurze obslugi sygnalow
https://en.wikipedia.org/wiki/C_signal_handling

2
Marcin Marcin napisał(a):

mam konwerter do danych z formatu A do B oraz programy które przetwarzają później te dane

Są przypadki gdy zwraca segmentation fault (core dumped) (nie wiem co wtedy)

Jak masz segfaulta ... to dużo bazowej pracy przed tobą nad debugowaniem. ZANIM nad tym zaczniesz budować wartośc dodatkową.

(Gdybym ja łączył coś z pythona z C, to bym zrobił autorskie rozszerzenie do Pythona.)
A po drugie bym rzucił C na rzecz C++ i wyjątków. Wyjatki z mocy ustawy załatwiają zagadnienia, którymi się martwisz, i wiele więcej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1