ง่ายต่อการสร้างข้อยกเว้นของคุณเองใน Ruby เพียงทำตามขั้นตอนเหล่านี้:
1. สร้างคลาสใหม่
ข้อยกเว้นคือคลาส เช่นเดียวกับทุกอย่างใน Ruby! หากต้องการสร้างข้อยกเว้นประเภทใหม่ ให้สร้างคลาสที่สืบทอดมาจาก StandardError หรือคลาสย่อยตัวใดตัวหนึ่ง
class MyError < StandardError
end
raise MyError
ตามแบบแผน ข้อยกเว้นใหม่มีชื่อคลาสที่ลงท้ายด้วย "ข้อผิดพลาด" แนวทางปฏิบัติที่ดีในการใส่ข้อยกเว้นแบบกำหนดเองของคุณลงในโมดูล นั่นหมายความว่าคลาสข้อผิดพลาดสุดท้ายของคุณจะมีลักษณะดังนี้:ActiveRecord::RecordNotFound
และ Net::HTTP::ConnectionError
.
2. เพิ่มข้อความ
ทุกวัตถุข้อยกเว้นทับทิมมีแอตทริบิวต์ข้อความ เป็นข้อความที่ยาวกว่าซึ่งพิมพ์ถัดจากชื่อข้อยกเว้น
ตัวอย่างแอตทริบิวต์ข้อความของข้อยกเว้น
คุณสามารถระบุข้อความเมื่อคุณแจ้งข้อยกเว้น เช่น:
raise MyError, "My message"
และคุณสามารถเพิ่มข้อความเริ่มต้นให้กับคลาสข้อผิดพลาดที่คุณกำหนดเองได้โดยการเพิ่มตัวสร้างของคุณเอง
class MyError < StandardError
def initialize(msg="My default message")
super
end
end
3. เพิ่มแอตทริบิวต์ข้อมูลที่กำหนดเองให้กับข้อยกเว้นของคุณ
คุณสามารถเพิ่มข้อมูลที่กำหนดเองไปยังข้อยกเว้นของคุณได้ เช่นเดียวกับที่คุณทำในคลาสอื่นๆ มาเพิ่มโปรแกรมอ่านแอตทริบิวต์ในชั้นเรียนของเราและอัปเดตตัวสร้าง
class MyError < StandardError
attr_reader :thing
def initialize(msg="My default message", thing="apple")
@thing = thing
super(msg)
end
end
begin
raise MyError.new("my message", "my thing")
rescue => e
puts e.thing # "my thing"
end
แค่นั้นแหละ! การสร้างข้อผิดพลาดหรือข้อยกเว้นแบบกำหนดเองใน Ruby นั้นไม่ใช่เรื่องยากจริงๆ มีสิ่งหนึ่งที่ควรทราบ สังเกตว่าเรามักจะสืบทอดจาก StandardError ในตัวอย่างได้อย่างไร นั่นเป็นความตั้งใจ ในขณะที่มีคลาส Exception ใน Ruby คุณไม่ควรสืบทอดโดยตรงจากคลาสนั้น สำหรับข้อมูลเพิ่มเติม โปรดดูบทความเกี่ยวกับความแตกต่างระหว่าง Exception และ StandardError