Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

การจัดการข้อยกเว้นที่กำหนดเองใน Ruby: ปรับปรุงการจัดการข้อผิดพลาดและการสังเกตการณ์

การปรับแต่งข้อยกเว้นมักไม่ใช่เรื่องที่น่ากังวลในระหว่างการพัฒนาซอฟต์แวร์ แต่หากคุณจับข้อผิดพลาดในเครื่องมือสังเกตการณ์และไม่สามารถระบุปัญหาได้อย่างถูกต้องและรวดเร็ว คุณอาจต้องการข้อมูลและรายละเอียดเพิ่มเติมเกี่ยวกับข้อยกเวนนั้น

บทความนี้จะแสดงวิธีการปรับแต่งข้อยกเว้นใน Ruby และลดปัญหาที่อาจเกิดขึ้นในอนาคตเนื่องจากขาดข้อมูลข้อผิดพลาด

ลองเริ่มกันเลย!

บันทึกข้างเคียงสั้นๆ

โพสต์นี้เป็นการพัฒนาต่อยอดจาก "Debugging in Ruby with AppSignal" เราขอแนะนำให้อ่านนั้นก่อนเพื่อภาพรวมการดีบั๊กและแนะนำข้อยกเว้นที่กำหนดเอง

วิธีจับข้อยกเว้นด้วย Ruby

Ruby มีคลาสชื่อ Exception ซึ่งคลาสการจัดการข้อผิดพลาดต่างๆ สืบทอดมาจาก ในส่วนนี้ เราจะเข้าใจโครงสร้างการไหลของข้อยกเว้นใน Ruby ก่อนที่จะสร้างข้อยกเว้นของตัวเอง

Exception เป็นคลาสข้อยกเว้นหลักใน Ruby และ rescue Exception จะจับข้อยกเว้นทั้งหมดที่สืบทอดมาจาก Exception การใช้งานนี้ไม่ใช่แนวทางปฏิบัติที่ดีที่สุดสำหรับแอปของเรา เนื่องจากจะจับข้อยกเว้นทั้งหมดที่ Ruby ใช้ภายใน

วิธีที่ง่ายที่สุดในการจับข้อยกเว้นใน Ruby คือการสร้างบล็อกโค้ด begin ... rescue เช่นตัวอย่างด้านล่าง:

 

เนื่องจาก Exception จะจับข้อยกเว้นทั้งหมด เราควรพยายามใช้สิ่งที่เฉพาะเจาะจงมากขึ้นเพื่อกรองและได้เฉพาะข้อผิดพลาดที่เราต้องการ ตัวอย่างหนึ่งคือคลาส StandardError ซึ่งเป็นตัวจับข้อยกเว้นมาตรฐานที่ใช้จับข้อยกเว้นที่เกี่ยวข้องกับข้อผิดพลาดโค้ดแอปพลิเคชัน โดยละเลยข้อยกเว้นภายในของ Ruby

เพื่อจับ StandardException คุณสามารถใช้ตัวอย่างด้านล่าง:

 

หรือหากไม่ระบุคลาสข้อยกเว้น Ruby จะคืนค่าข้อยกเว้นที่จัดการโดยคลาส StandardException

 

ในการสร้างข้อยกเว้นที่กำหนดเองด้วย Ruby คุณอาจจะสร้างคลาสที่สืบทอดมาจาก StandardError เราจะครอบคลุมในส่วนต่อไป

เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับข้อยกเว้นและหาคลาสที่ดีที่สุดในการสืบทอด โปรดตรวจสอบรายการข้อยกเว้นของ Ruby

เพิ่มข้อมูลเพิ่มเติมให้กับข้อยกเว้นของ Ruby

การสร้างข้อยกเว้นใหม่โดยไม่ส่งข้อมูลที่เกี่ยวข้องจะไม่ช่วยให้ดีบั๊กได้อย่างมีประสิทธิภาพ — คือการระบุและแก้ไขปัญหา คุณต้องเพิ่มรายละเอียดข้อผิดพลาด ที่นี่เราจะเห็นวิธีส่งข้อมูลจากอ็อบเจกต์ไปยังข้อยกเว้นที่กำหนดเอง

ลองสร้างข้อยกเว้นที่กำหนดเองใหม่เพื่อรับข้อมูลที่เราต้องการบันทึก ตามที่กล่าวไว้ในส่วนก่อนหน้า ข้อยกเว้นที่กำหนดเองต้องสืบทอดมาจาก StandardError

คุณสามารถใช้โปรเจกต์ Rails เรียบง่ายเพื่อทดสอบการใช้งานนี้ สร้างโฟลเดอร์ใหม่ชื่อ exceptions ภายในโฟลเดอร์ app และคลาสชื่อ custom_exception.rb ในโปรเจกต์ Rails ของคุณ

 

ในคลาสข้อยกเว้นนี้ เราสามารถกำหนดข้อมูลทั้งหมดที่ต้องการแสดงในบันทึก และเราใช้แอตทริบิวต์สี่อย่างสำหรับข้อมูลของเรา:

  • รหัสเพื่อนับข้อยกเว้น
  • ชื่อ
  • ข้อความข้อมูล
  • ข้อมูลภายในรายละเอียดเกี่ยวกับข้อยกเว้นที่ Ruby มอบให้แล้ว

และตอนนี้เราสร้างบล็อก begin...rescue เพื่อยก CustomException และส่งพารามิเตอร์ไปยังแอตทริบิวต์ของข้อยกเว้น

 

ดูมีประโยชน์ ลองดำเนินการต่อและใช้ข้อมูลนี้เพื่อปรับแต่งบันทึกข้อยกเว้น

การขยายข้อยกเว้นใน Ruby

การขยายข้อยกเว้นช่วยให้เราสามารถปรับแต่งให้เฉพาะเจาะจงและนำกลับมาใช้ใหม่ได้มากขึ้น เหมือนกับที่ Ruby มีข้อยกเว้นหลายอย่างสำหรับประเภทข้อผิดพลาดต่างๆ เราสามารถปฏิบัติตามแนวทางการเขียนโปรแกรมนี้ในระบบของเราได้เช่นกัน

ต่อไป เราจะเข้าใจวิธี override ข้อยกเว้นของเราและใช้ในบริบทที่ต้องการการขยาย

การค้นหาข้อมูลในบันทึกเป็นกิจกรรมที่ทำให้เจ็บปวด นักพัฒนาบ่อยครั้งที่โทษตัวเองที่ไม่ได้รวมข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดหรือวิธีค้นหาและกรอง หากคุณไม่ได้ใช้เครื่องมือตรวจสอบที่ให้สิ่งนี้ การรวมข้อมูลที่มีความหมายอาจช่วยคุณในอนาคต

เคล็ดลับมืออาชีพ: ดูส่วน 'Debugging Exceptions in Ruby with AppSignal' ในโพสต์ Debugging in Ruby with AppSignal สำหรับข้อมูลเกี่ยวกับวิธีตั้งค่าและติดตามข้อยกเว้นที่กำหนดเองใน AppSignal

ในตัวอย่างด้านล่าง เราจะปรับแต่งการแสดงข้อยกเว้นในบันทึก เริ่มแรกคุณอาจคิดว่ามันเป็นแค่วิธีการแสดงข้อมูลที่สวยงามและเบาๆ แต่คำสำคัญที่ใช้ในข้อมูลเป็นกุญแจสำคัญในการค้นหาข้อผิดพลาดและช่วยผู้ที่จะตรวจสอบแอปพลิเคชัน

เพิ่ม gem colorize ลงในโปรเจกต์ของคุณโดยรวมโค้ดด้านล่างใน Gemfile

 

รัน bundle เพื่อติดตั้ง gem colorize และเปิดแอปพลิเคชัน Rails ของคุณ

 

ตอนนี้ในคลาสข้อยกเว้นของคุณ ให้นำเข้า gem พิมพ์แอตทริบิวต์ในรูปแบบที่จัดรูปแบบ เพื่อให้มองเห็นง่ายและค้นหาข้อผิดพลาดสำคัญได้รวดเร็ว

 

ดูผลลัพธ์ของการปรับแต่งภาพนี้และทดสอบตัวเลือกบางอย่างเพื่อสร้างรูปแบบและสไตล์ของคุณเอง

การจัดการข้อยกเว้นที่กำหนดเองใน Ruby: ปรับปรุงการจัดการข้อผิดพลาดและการสังเกตการณ์

สรุปและขั้นตอนต่อไป

ในโพสต์นี้ เราได้ครอบคลุมวิธีปรับแต่งและเน้นข้อยกเว้น Ruby ในบันทึกของคุณ มีการปรับแต่งอื่นๆ อีกมากมาย แต่สิ่งสำคัญที่สุดคือคุณจัดการข้อยกเว้นที่เกี่ยวข้องกับแอปพลิเคชันของคุณ และจำไว้ อย่าใช้สไตล์การจัดรูปแบบเดียวกันกับข้อยกเว้นทั้งหมด เพราะ Rails ทำแล้ว

ขอให้เขียนโค้ดสนุกสนาน!

P.S. หากคุณต้องการอ่านโพสต์ Ruby Magic ทันทีที่เผยแพร่ สมัครรับจดหมายข่าว Ruby Magic และจะไม่พลาดโพสต์ใดๆ!

การจัดการข้อยกเว้นที่กำหนดเองใน Ruby: ปรับปรุงการจัดการข้อผิดพลาดและการสังเกตการณ์

Brena Monteiro

ผู้เขียน אורח Brena เป็น Tech Lead ที่หลงใหลในการเป็นที่ปรึกษานักพัฒนาใหม่และมีประสบการณ์ในการพัฒนาและนำทีมที่มีประสิทธิภาพสูง เธอมีประสบการณ์ในการสร้าง API ที่ขยายได้และการรวมระหว่างบริการคลาวด์ สนใจสถาปัตยกรรมเชิงวิวัฒนาการ และเป็นนักเรียนฝึกงาน Extended Reality (XR)

บทความทั้งหมดโดย Brena Monteiro