Ruby:Exception
From Blognone
ภาษาส่วนใหญ่ มักจัดการกับปัญหาที่คาดไม่ถึง ด้วย exception เมื่อโปรแกรมมีปัญหาแทนที่จะออกจากโปรแกรมไปเลย ถ้านักพัฒนาเขียน exception ไว้โปรแกรมจะก็จะมาเรียก exception แทนที่จะออกจากโปรแกรมไป
ruby ไม่มี exception :p
เราจะใช้ begin/rescue ในการ catch exceptions แทน
begin quotient = 1/0 #Boom! rescue puts('Something bad happen') end
ในกรณีข้างต้น แทนที่โปรแกรมจะแสดง error
ZeroDivisionError: divided by 0 from (irb):1:in `/' from (irb):1
โปรแกรมจะแสดงคำว่า "Something bad happen"
ถ้าเราต้องการแสดงผลให้ตรงกับปัญหาที่เกิดขึ้นเราสามารถ กำหนดได้ว่าปัญหาแบบไหนที่ให้ rescue
begin quotient = 1/0 #Boom! rescue ZeroDivisionError puts('You tried to divide by zero') end
ในตัวอย่างข้างต้นถ้าปัญหาที่เกิดไม่ได้เป็นการหารด้วยศูนย์ โปรแกรมจะแสดง error ตามปกติโดยไม่เข้า rescue
ถ้าเรารู้อยู่แล้วว่า method ของเรามีโอกาศ error แทนที่จะรอให้เกิด error ก่อน เราสามารถตรวจสอบแล้วส่งไป rescue ได้เลย
if denominator == 0 raise ZeroDivisionError end return numerator/denominator
ในกรณีที่เราต้องการสร้าง exception ของตนเอง Ruby มีทางลัดให้
>>> raise 'You did it wrong' RuntimeError: You did it wrong
ruby จะสร้าง Object RuntimeException ขึ้นมาแล้วใช้ 'You did it wrong' เป็นข้อความแนบไปกับ exception ที่เกิดขึ้น ในกรณีนี้เราไม่ต้องใช้ rescue เลย