Tratarea Erorilor în Ruby: begin, rescue, ensure, raise și retry în Ruby

Ghid complet pentru gestiunea excepțiilor în Ruby: prinderea erorilor cu begin/rescue, curățarea obligatorie cu ensure, aruncarea erorilor cu raise și reîncercarea automată cu retry.

Sintaxă
begin; ...; rescue StandardError => e; ...; ensure; ...; end

Gestiunea erorilor în Ruby se realizează prin blocul begin ... rescue ... ensure ... end. În ierarhia de clase din Ruby, majoritatea erorilor de aplicație moștenesc din StandardError.

Tratarea excepțiilor cu salvare și reîncercare (retry)
incercari = 0

begin
  incercari += 1
  puts "Tentativa #{incercari}: Se încearcă conectarea la serverul extern..."
  
  if incercari < 3
    raise IOError, "Conexiunea la rețea a eșuat temporar!"
  end

  puts "Conexiune stabilită cu succes!"

rescue IOError => e
  puts "[AVERTISMENT] Eroare captată: #{e.message}"
  if incercari < 3
    sleep(0.3)
    retry # Reia execuția blocului begin de la prima linie!
  else
    puts "[EROARE CRITICĂ] S-a depășit numărul maxim de reîncercări."
  end

ensure
  # Blocul ensure se execută ÎNTOTDEAUNA, indiferent dacă a apărut o eroare sau nu:
  puts "[CLEANUP] Resurse eliberate."
end
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Tratarea Erorilor în Ruby: begin, rescue, ensure, raise și retry

Ai o nelămurire despre utilizarea comenzii Tratarea Erorilor în Ruby: begin, rescue, ensure, raise și retry sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.