Graciös utgång

En graciös utgång (eller graciös hantering ) är ett enkelt programmeringsspråk [ citat behövs ] där ett program upptäcker ett allvarligt feltillstånd och "går ur graciöst" på ett kontrollerat sätt som ett resultat. Ofta skriver programmet ut ett beskrivande felmeddelande till en terminal eller logg som en del av den graciösa utgången.

Vanligtvis finns kod för en graciös utgång när alternativet – att tillåta felet att förbli oupptäckt och ohanterat – skulle producera falska fel eller senare avvikande beteende som skulle vara svårare för programmeraren att felsöka . Koden som är kopplad till en graciös utgång kan också ta ytterligare steg, som att stänga filer , för att säkerställa att programmet lämnar data i ett konsekvent, återställbart tillstånd.

Graciösa utgångar är inte alltid önskvärda. I många fall kan en direkt krasch ge mjukvaruutvecklaren möjlighet att bifoga en debugger eller samla in viktig information, till exempel en core dump eller stack trace , för att diagnostisera grundorsaken till felet.

På ett språk som stöder formell undantagshantering kan en graciös utgång vara det sista steget i hanteringen av ett undantag. På andra språk kan graciösa exit implementeras med ytterligare uttalanden vid platsen för möjliga fel.

Frasen "graciös exit" har också generaliserats till att hänvisa till att släppa taget från ett jobb eller förhållande i livet som har tagit slut.

I Perl

I programmeringsspråket Perl implementeras graciösa exit i allmänhet via tärningsoperatören . Till exempel, koden för att öppna en fil lyder ofta som följande:


       # Öppna filen "myresults" för att skriva, eller dö med ett lämpligt felmeddelande.  öppna  RESULTS  ,  '>'  ,  'myresults'  eller  die  "kan inte skriva till 'myresults'-filen: $!"  ; 

Om försöket att öppna filen myresults misslyckas, kommer det innehållande programmet att avslutas med ett felmeddelande och en utgångsstatus som indikerar onormal avslutning.

I Java

I programmeringsspråket Java används ofta försök...fångstblocket för att fånga undantag . All potentiellt farlig kod placeras inuti blocket och, om ett undantag inträffade, stoppas eller fångas upp.

 
    
         
     
        
    
   
    
    
    
 try  {  // Försök att läsa filen "file.txt"  Scanner  sc  =  new  Scanner  (  ny  fil  (  "file.txt"))  ;  while  (  sc  .  hasNextLine  ())  System  .  ut  .  println  (  sc  .  readLine  ());  sc  .  stäng  ();  }  catch  (  IOException  e  )  {  // Filen kunde inte läsas  System  .  fel  .  println  (  "Filen kunde inte läsas. Stackspårning:"  );  e  .  printStackTrace  ();  } 

I C

I C kan man använda funktionen error(3) , som tillhandahålls i GNU av GNU C Library .

 
      0    int  fd  ;  if  ((  fd  =  öppen  (  "/dev/urandom"  ,  O_RDONLY  ))  <  )  fel  (  1  ,  errno  ,  "Öppningen misslyckades"  ); 

Om den första parametern inte är noll kommer denna funktion att avslutas från den överordnade processen och returnera den parametern.

Se även