Ghidul utilizatorului #24 - Ruby - Gestionarea excepțiilor de salvare

Pot apărea probleme neprevăzute în timpul rulării programului. Este posibil ca fișierul de citit să nu existe; discul poate fi plin în momentul scrierii datelor; utilizatorul poate introduce datele incorect.

Un program „robust” ar trebui să gestioneze clar și grațios această situație. Anticiparea acestui lucru poate fi o sarcină dureroasă și epuizantă. Programatorii C ar trebui să verifice rezultatul fiecărui apel de sistem potențial eșuat și să decidă imediat ce ar trebui făcut în acest caz:

Acest lucru este atât de obositor încât programatorul poate avea tendința de a deveni mai neglijent; ca urmare, programul nu gestionează în mod fiabil excepțiile. Pe de altă parte, a face treaba corect face ca textul programului să nu fie citit, deoarece astfel de greoaie de gestionare a erorilor generează un cod semnificativ.

Uneori ai nevoie de oportunitatea de a fi creativ cu o problemă. Aici, dacă fișierul necesar nu este disponibil, încercăm să folosim intrarea standard:

Retry poate fi folosit în interiorul salvare pentru a declanșa o re-execuție a blocului start. Acum putem rescrie exemplul anterior puțin mai compact:

Cu toate acestea, există un dezavantaj aici. Un fișier inexistent poate face ca acest cod să ruleze din nou și din nou. Ar trebui să aveți grijă de această capcană când utilizați reîncercarea pentru a gestiona excepțiile.

Orice bibliotecă Ruby aruncă o excepție atunci când apare orice eroare și, de asemenea, puteți genera erori în mod explicit în codul dvs. Pentru a face acest lucru, utilizați raise . Acest operator ia un argument, care este un șir care descrie excepția. Argument nuobligatoriu, dar nu trebuie omis. Poate fi preluat ulterior din variabila globală specială $! .