Ruby:
การจัดการกับข้อผิดพลาด
วิธีการ:
Ruby ใช้ begin
, rescue
, ensure
, และ end
ในการจัดการข้อผิดพลาด คุณห่อโค้ดที่เสี่ยงด้วย begin
และ end
หากเกิดข้อผิดพลาด, rescue
จะเริ่มทำงาน
begin
# โค้ดที่เสี่ยงต่อการผิดพลาดไปที่นี่
puts 10 / 0
rescue ZeroDivisionError => e
puts "โอ๊ะ! คุณทำอะไรนั้นไม่ได้: #{e.message}"
ensure
puts "สิ่งนี้จะทำงานเสมอ, ไม่ว่าจะมีข้อผิดพลาดหรือไม่"
end
ผลลัพธ์ตัวอย่าง:
โอ๊ะ! คุณทำอะไรนั้นไม่ได้: หารด้วย 0
สิ่งนี้จะทำงานเสมอ, ไม่ว่าจะมีข้อผิดพลาดหรือไม่
การศึกษาลึก
โดยประวัติศาสตร์, การจัดการข้อผิดพลาดในภาษาโปรแกรมมิ่งได้พัฒนาอย่างมาก โดยภาษาก่อนๆ มักมีกลไกที่หยาบคายหรือไม่มีเลย การจัดการข้อยกเว้นของ Ruby ได้รับแรงบันดาลใจจากภาษาเช่น Python และ Smalltalk
ทางเลือกอื่นๆ กับ begin-rescue
ใน Ruby รวมถึงการใช้ rescue
ในคำนิยามของวิธีการหรือการใช้ throw
และ catch
สำหรับการควบคุมการไหลที่ไม่ธรรมดา, ถึงแม้ว่าจะไม่ใช้สำหรับการจัดการข้อผิดพลาดทั่วไป
รายละเอียดที่น่าสนใจหนึ่งข้อ: ข้อยกเว้นของ Ruby เป็นวัตถุ (อินสแตนซ์ของคลาส Exception
และลูกหลาน), ดังนั้นคุณจึงสามารถกำหนดคลาสข้อผิดพลาดของคุณเองและทำมากกว่าเพียงแค่บันทึกข้อผิดพลาด — คุณสามารถพกพาสถานะที่หนาแน่นไปรอบๆ โปรแกรมเพื่อการจัดการข้อผิดพลาดที่แข็งแกร่งยิ่งขึ้น
ดูเพิ่มเติม
- เอกสาร Ruby เกี่ยวกับข้อยกเว้นและการจัดการข้อผิดพลาด: ruby-doc.org
- คู่มือละเอียดเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดในการจัดการข้อผิดพลาดของ Ruby: thoughtbot.com