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

การทำงานกับข้อยกเว้นใน Pry

ถ้าคุณเป็นเหมือนฉัน คุณใช้คอนโซล Rails บ่อยมาก และตอนนี้ฉันคิดว่าทุกคนเห็นพ้องต้องกันว่า Pry เป็นสิ่งที่ดีที่สุดที่จะเกิดขึ้นกับคอนโซล Rails ตั้งแต่นั้นมา...

Built-in to pry เป็นฟีเจอร์เจ๋งๆ บางส่วนที่ช่วยให้ทำงานโดยมีข้อยกเว้นได้ง่ายกว่าใน IRB แบบเก่าทั่วไป

ดูย้อนหลังแบบเต็ม

เมื่อข้อยกเว้นเกิดขึ้นใน Pry (หรือ IRB สำหรับเรื่องนั้น) คุณจะเห็น backtrace เวอร์ชันสั้น ปกติดีพอแต่ไม่เสมอไป

ใน pry คุณสามารถดู backtrace ทั้งหมดของข้อยกเว้นล่าสุดได้โดยใช้คำสั่ง wtf -v หากคุณเว้นแฟล็ก -v ไว้ คุณจะได้รับ backtrace แบบย่อ

การทำงานกับข้อยกเว้นใน Pry ใช้คำสั่ง wtf เพื่อเข้าถึง backtrace ล่าสุด

ข้อมูลข้อยกเว้นการเข้าถึง

ข้อยกเว้นมักจะมีข้อมูลที่น่าสนใจแนบมาด้วย เมื่อมีข้อยกเว้นเกิดขึ้นใน IRB คุณจะเห็นเฉพาะชื่อคลาสและข้อความแสดงข้อผิดพลาดเท่านั้น แต่ด้วย Pry คุณสามารถเข้าถึงวัตถุยกเว้นจริงได้ หมายความว่าคุณเข้าถึงและดึงข้อมูลที่ต้องการได้

หากต้องการรับข้อยกเว้นที่แจ้งล่าสุด ให้ใช้ _ex_ ตัวแปร. ไม่เหมือนกับ $! . ในตัวของ Ruby คุณไม่จำเป็นต้องอยู่ในบล็อกกู้ภัยเพื่อใช้งาน

การทำงานกับข้อยกเว้นใน Pry ใช้ ตัวอย่าง ตัวแปรท้องถิ่นเพื่อเข้าถึงข้อยกเว้นล่าสุด

กำหนดวิธีการแสดงข้อยกเว้น

สมมติว่าคุณต้องการเห็น backtrace ทั้งหมดเมื่อคุณอยู่ใน pry? คุณสามารถทำได้โดยแทนที่ตัวจัดการข้อยกเว้นเริ่มต้น

แค่เปิด ~/.pryrc แล้วทำให้มันเป็นแบบนี้:

# This code was mostly taken from the default exception handler. 
# You can see it here: https://github.com/pry/pry/blob/master/lib/pry.rb

Pry.config.exception_handler = proc do |output, exception, _|
  if UserError === exception && SyntaxError === exception
      output.puts "SyntaxError: #{exception.message.sub(/.*syntax error, */m, '')}"
  else
    output.puts "#{exception.class}: #{exception.message}"
    output.puts "from #{exception.backtrace}"   
  end
end

คุณยังสามารถทำสิ่งที่บ้าๆ บอๆ เช่น บันทึกข้อยกเว้น Pry ทั้งหมดของคุณไปที่ Honeybadger :)