Láimhsíonn Ruby earráidí le begin// (coibhéis Ruby do try/catch/finally). Déanann tú ar eisceachtaí agus iad, agus ann do ghlanadh. Ligeann Ruby duit freisin rescue ar leibhéal modúil (gan soiléir) do chód níos geal.
Láimhsíonn Ruby earráidí le begin// (coibhéis Ruby do try/catch/finally). Déanann tú ar eisceachtaí agus iad, agus ann do ghlanadh. Ligeann Ruby duit freisin rescue ar leibhéal modúil (gan soiléir) do chód níos geal.
rescueensureraiserescueensurebeginbegin
result = risky_operation
rescue ArgumentError => e # rescue a SPECIFIC exception type
puts "Bad argument: #{e.message}"
rescue StandardError => e # broader catch (StandardError, not Exception)
puts "Error: #{e.message}"
retry if attempts < 3 # retry can re-run the begin block
else
puts "succeeded" # runs if NO exception
ensure
cleanup # ALWAYS runs (success or failure)
end
Is é begin/rescue/ensure ná try/catch/finally Ruby. Rescue cineálacha sonracha (rescue ArgumentError), úsáid ensure do ghlanadh arna bharántú, agus else don chás gan earráid. Is féidir le retry an bloc a atriail.
rescue StandardError, ní Exceptionrescue => e # ✅ bare rescue catches StandardError (the right default)
rescue StandardError # ✅ explicit, same thing
rescue Exception # ❌ AVOID — catches EVERYTHING including system signals
# (Interrupt/Ctrl-C, SystemExit) — can break the program
Tábhachtach: báitíonn rescue folamh StandardError (an réamhshocrú ceart do earráidí feidhmchlár). Má dhéanann tú Exception (an fréamh) a dhúnmharú, báitíonn sé gach rud, lena n-áirítear comharthaí ar leibhéal córais cosúil le Interrupt (Ctrl-C) agus SystemExit — nach bhraithim go bhagairt a dhúnmharú de ghnáth, mar is féidir leis cosc a chur ar an bhfreagra d'idirleathadh nó ar dhul i bhfeidhm i gceart. Earráid choiteann Ruby.
raise ArgumentError, "Amount must be positive" # raise a built-in
raise "Something failed" # raises RuntimeError
# custom exception class
class InsufficientFundsError < StandardError # inherit from StandardError
def initialize(msg = "Not enough funds")
super
end
end
raise InsufficientFundsError
def process
do_work
rescue => e # rescue WITHOUT begin — applies to the whole method body
handle(e)
ensure
cleanup
end
Is ríthábhachtach láimhseáil eisceachtaí ceart do fheidhmchláir dhúshlánach Ruby, agus tá sé tábhachtach a thuiscint cur chuige Ruby — lena n-áirítear a idiómaí agus rabhadh sonracha air — a thuiscint.
Is é an struchtúr begin/rescue/ensure (try/catch/finally Ruby), ag dúnmharú cineálacha eisceachtaí sonracha, ag úsáid ensure do ghlanadh arna bharántú, agus an rescue ar leibhéal modúil gheal (gan begin soiléir) iad fon-eolais láethúil bhunúsach.
Is pointe ar leith agus go háirithe Ruby an idirdhealú StandardError vs Exception: báitíonn rescue folamh (agus an réamhshocrú ceart) StandardError, ach má dhéanann tú Exception (fréamh an ordlathach) a dhúnmharú, báitíonn sé gach rud — lena n-áiríteh comharthaí córais cosúil le Interrupt (Ctrl-C) agus SystemExit — nach bhraithim go bhagairt a dhúnmharú beagnach riamh, toisc go bhféadfadh sé cosc a chur ar an bhfreagra d'idirleathadh nó ar dhul i bhfeidhm i gceart, agus is earráid choiteann, dhíobhálach í.
Tá sé tábhachtach a thuiscint gur chóir duit StandardError (ní Exception) a dhúnmharú do earráidí feidhmchlár, agus is eolas Ruby-bhunaithe tábhachtach a bhac earráidí fíor.
Tá an struchtúr, ranganna eisceachtaí saincheaptha (ag oidhreachú ó StandardError), retry, an t-idiom rescue ar leibhéal modúil, agus go háirithe an rabhadh StandardError-ní-Exception tábhachtach chun Ruby dúshlánach, ceart a scríobh a láimhsíonn earráidí go grásmhar gan an cumas chun an chláir a bheith idirleathnaithe a bhristeadh.
Toisc go dtabhraíonn earráidí nach ndealraíonn ann agus an botún Exception-rescuing araon fadhbanna fíor, tá sé tábhachtach, minic-ábhartha eolais do fhorbairt Ruby iontaofa agus ábhar coitianta agal, mastery Ruby's láimhseáil eisceachtaí — a struchtúr, idiómaí, agus an idirdhealú ríthábhachtach StandardError vs Exception.