23. marts 2007 - 18:14Der er
12 kommentarer og 1 løsning
Mit største problem, error handling. Hvordan?
Hej Jeg har været igang med at programmere på et projekt i et stykke tid nu. Jeg havde planlagt det hele. Faktisk brugt utrolig lang tid på det, og jeg havde aftalt med mig selv at jeg ville have at alle fejl skulle vises via en exceptions, men jeg kan nu se at dette ikke er måden at gøre det på. Derfor har jeg nu bestemt mig for at bruge return koderne 1 for success og -1 for fail og skrive til cerr og/eller clog, og kun bruge exceptions når der sker noget exceptionelt, men burde jeg overhovedet bruge exceptions? Er cerr ikke bare cout uden stdio og stderr?
Mit projekt har nogle wrapper klasser hvor jeg blandt andet kan behandle ip adresser og sende og modtage tekst via sockets. Disse funktioner jeg bruger til dette fra C biblioteket. Kunne jeg mon bruge perror? Mit største problem er egentlig hvordan jeg gør mit system felksibel med error behandling. Altså kan jeg bruge en mellemting mellem perror og cerr? Eller ville det være dumt?
Ah ok. Der er ikke et sted hvor der kommer mange fejl, så som en algoritme som kører over større talrækker i mange dage, men jeg bruger jo disse C funktioner, og jeg kunne forstille mig at hvis der skete en fejl i disse funktioner, så har de en eller anden standard tekst tilknyttet så som "xxx is not an directory". Kunne det ikke være muligt at hente denne tekst ud, så brugeren helt nøjagtig ved hvad det er som er gået galt!? En funktion kan vel godt have flere fejl jo, og jeg ved jo ikke hvad fejlen er ved bare at kontrollere efter -1. Kunne jeg lave en klasse eller funktion som jeg kunne bruge sammen med min fejlhåndtering som lavede og skrev fejlene. Hentede evt. fejlmeddeleser fra C funktioner, skrev den til standard error channel, og evt loggede det. Det jeg er gået ud fra er, hvis der sker en fejl, så bliver følgende gjort:
Altså det jeg vil lave er vel bare en enkel version af log4cpp. Jeg vil dog ikke bruge log4cpp, da dette projekt er for at holde mig igang med programmering og for at lae et projekt som har alt i sig, som jeg ind til videre kan med C++, og som jeg føler mig sikker på. Fejlhåndtering er dog nyt for mig, men det skal jo ikke at lære noget nyt.
Ja, lige netop, smide en exception, med teksten som er sat via C funktionen. Jeg tror jeg er ved at forstå det ordsprog som jeg fik da jeg snakkede med en anden en "only throw an exception when som exceptional happens", altså hvis du ved der sker mange fejl, så lad være med at smide en exception, men lave en return kode.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.