Ruby begin// மூலம் பிழைகளைக் கையாளுகிறது (Ruby இன் try/catch/finally சமமான). நீங்கள் விதிவிலக்குகளை செய்து செய்யலாம், சுத்தம் செய்ய ஐ பயன்படுத்தலாம். Ruby மேலும் சுத்தமான குறியீட்டுக்கான முறை-நிலை rescue (வெளிப்படையான இல்லாமல்) அனுமதிக்கிறது.
Ruby begin// மூலம் பிழைகளைக் கையாளுகிறது (Ruby இன் try/catch/finally சமமான). நீங்கள் விதிவிலக்குகளை செய்து செய்யலாம், சுத்தம் செய்ய ஐ பயன்படுத்தலாம். Ruby மேலும் சுத்தமான குறியீட்டுக்கான முறை-நிலை rescue (வெளிப்படையான இல்லாமல்) அனுமதிக்கிறது.
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
begin/rescue/ensure Ruby இன் try/catch/finally ஆகும். குறிப்பிட்ட வகைகளை rescue செய்யவும் (rescue ArgumentError), உறுதி செய்யப்பட்ட சுத்தம் செய்ய ensure ஐ பயன்படுத்தவும், மற்றும் பிழை இல்லாத நிகழ்வுக்கு else ஐ பயன்படுத்தவும். retry தொகுதியை மீண்டும் முயற்சி செய்யலாம்.
rescue => 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
முக்கியம்: வெறும் rescue StandardError ஐ பிடிக்கிறது (பயன்பாட்டு பிழைகளுக்கான சரியான முறை). Exception (வேர்) ஐ rescue செய்வது எல்லாவற்றையும் பிடிக்கிறது, Interrupt (Ctrl-C) மற்றும் SystemExit போன்ற அமைப்பு-நிலை சமிக்ஞைகள் உட்பட் — இவை நீங்கள் பொதுவாக பிடிக்க விரும்பாத, நிரல் குறுக்கிடப்பட வோ அல்லது சரியாக வெளியேற வோ தடுக்கும் உதாரணம் 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
சரியான விதிவிலக்கு கையாளுதல் வலுவான Ruby பயன்பாடுகளுக்கு அপরிहार்யமாகும், மற்றும் Ruby இன் நெருங்கிய முறையைப் புரிந்துகொள்ளுதல் — அதன் குறிப்பிட்ட மூலைவிடை மற்றும் எச்சரிக்கை உட்பட் — முக்கியமாகும்.
begin/rescue/ensure அமைப்பு (Ruby இன் try/catch/finally), குறிப்பிட்ட விதிவிலக்கு வகைகளை rescue செய்வது, உறுதி செய்யப்பட்ட சுத்தம் செய்ய ensure ஐ பயன்படுத்துவது, மற்றும் சுத்தமான முறை-நிலை rescue (வெளிப்படையான begin இல்லாமல்) அடிப்படை தினசரி அறிவாகும்.
ஒரு குறிப்பாக முக்கியமான மற்றும் அறிவுரை Ruby புள்ளி StandardError vs Exception தெளிவுபடுத்தல்: வெறும் rescue (Exception எழுப்ப) StandardError ஐ பிடிக்கிறது, ஆனால் Exception (வேர்) ஐ rescue செய்வது எல்லாவற்றையும் பிடிக்கிறது — Interrupt (Ctrl-C) மற்றும் SystemExit போன்ற அமைப்பு சமிக்ஞைகள் உட்பட் — இவை நீங்கள் கிட்டத்தட்ட எப்போதும் விரும்பாத, நிரல் குறுக்கிடப்பட வோ அல்லது சரியாக வெளியேற வோ தடுக்கும், மற்றும் பொதுவான, தீங்கு விளைவிக்கும் பிழை.
பயன்பாட்டு பிழைகளுக்கான StandardError (அல்ல Exception) ஐ rescue செய்ய வேண்டும் என்பதை புரிந்துகொள்ளுதல் முக்கிய Ruby-குறிப்பிட்ட அறிவு அது உண்மையான பிழைகளைத் தடுக்கிறது.
আমরা அமைப்பு, தனிப்பயன் விதிவிலக்கு வகுப்புகள் (StandardError இ்ற்றாம்), retry, முறை-நிலை rescue மூலைவிடை, மற்றும் குறிப்பாக StandardError-not-Exception எச்சரிக்கை தெரிந்தால் வலுவான, சரியான Ruby எழுதுவது விதிவிலக்குகளை புதிதாக கையாளுவது நிரலின் திறனுக் குறுக்கிட நோக்கி அதிக பொருத்தமான விதிவிலக்கு கையாளுதல் — அதன் அமைப்பு, மூலைவிடை, மற்றும் விமர্சன StandardError vs Exception தெளிவுபடுத்தல் — நம்பகமான Ruby பூர্ணமாக்கம் மற்றும் பொதுவான பேட்டி கலந்துகொள்ளுவது முக்கியமாகும்।