[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

RE: [PROGRAMMERING] C rutine til exec + pipe til og fra



En måde at undgå alle disse goto'er er at åbne og lukke filerne i en 
funktion og køre funktionaliteten i en anden.

concept code:

int funktionalitet(FILE *fil) {
  /* gør noget med fil og returner ved fejl */
}

int openclose() {
  FILE 
    *fil = fopen(...);

  if (fil)
    funktionalitet(fil);
  else
    ;/* fejl melding */
  
  fclose(fil);
}

i C++ er det noget lettere så opretter man bare streams lokalt og de 
bliver så lukket når man returnerer og med nogle passende throw ser 
fejlbehandling bedre ud.

int funktionalitet() {
  iostream // der findes sikkert en tilsvarende til pipes.
    fil("xxx"); 

  /* gør noget */

  /* ved fejl throw en exception */

  /* fil lukkes automatisk ved return / exception */
}

i coden hvor den kaldes:

try {
  funktionalitet();
} catch (dinexception &de) {
  // reparer dine fejl
} catch (iosteamsexceptions &ie {
  // prøv at gøre noget intelligent
} catch (...) { // resten eller lad overordnet exception handling stå for det.
  // hov noget uforudsigeligt skete
}

>-----Original Message-----
>From: Hans-Christian Stadler [mailto:sslug@sslug
>Sent: Tuesday, May 25, 2004 10:36 AM
>To: sslug@sslug
>Subject: Re: [PROGRAMMERING] C rutine til exec + pipe til og fra
>
>> program, men mere generelt. Din goto-baserede fejlhåndtering 
>er i mine
>> øjne også skrøbelig. Ikke et ondt ord om goto, men hvis en anden
>> programmør om et år skal rette i koden, er det nok rimelig 
>sandsynligt
>> at han ødelægger noget så en fil kan blive close()t to gange under en
>> eller anden fejlbetingelse. Det kunne måske endda ske for 
>dig selv, hvis
>> du ikke brugte tid nok på at forstå program flow'et når du vendte
>> tilbage til koden et par år efter.
>
>Jeg mener tværtimod, at læseligheden lider uden goto. Vis du 
>har overvejet
>alternativerne, så vis os dem dog. Ellers virker dit indlæg 
>som hul snak
>på mig.



 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 22:43 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *