ช่วยด้วยลองใส่ตัวอักษร หรือข้อความโปรแกรมจะเกิด Error
number = int(input('Please input number: '))
print('number is '+str(number))
Please input number: x
Traceback (most recent call last):
File "C:\python\code.py", line 4, in
number = int(input('Please input number: '))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: 'x'
ถ้าใส่ตัวเลขไม่เป็นไร เกิดจากอะไร แก้ไขยังไง
ปัญหานี้เกิดจากคำสั่ง int จะแปลงค่าที่รับมาเป็นตัวเลขแต่ข้อความ หรือตัวอักษรเช่น 'x' ไม่สามารถแปลงเป็นตัวเลขได้
วิธีแก้ไขให้ใช้ try catch finally
แล้ว try catch finally ของ Python คืออะไร
try catch finally ของ Python คือชุดบล็อคคำสั่งสำหรับดักจับข้อผิดพลาดที่อาจเกิดขึ้น และเมื่อเกิดขึ้นจะให้ทำยังไง
แยกหน้าที่การทำงานได้เป็น
1. try เป็นบล็อคสำหรับคลุมส่วนที่คิดว่าอาจจะเกิด Error ขึ้น
2. catch เป็นบล็อคที่หากเกิด Error ที่ try จะสั่งให้ทำยังไง
3. finally เป็น option ไม่ใส่ก็ได้ เป็นบล็อคที่ไม่ว่าจะเกิด Error หรือไม่เกิดโปรแกรมก็จะทำงานในนี้ตลอด
ขอดูตัวอย่างวิธีการใช้ try catch finally ของ Python หน่อย
try:
number = int(input('Please input number: '))
except:
number = 0
finally:
print('number is '+str(number))
// ผลลัพธ์
Please input number: x
number is 0
Please input number: 10
number is 10
จากผลลัพธ์เมื่อใส่ 'x' จะทำให้เกิด Error ที่ try ทำให้บล็อค except ทำงานและกำหนดให้ค่า number เท่ากับ 0 และสุดท้ายบล็อค finally ทำงานโดยการพิมพ์ค่า number ออกสู่หน้าจอ
เข้าใจการทำงานของ try except finally ของ Python แล้ว
เป็นบล็อคคำสั่งที่มีประโยชน์มาก เพราะช่วยป้องกันไม่ให้โปรแกรมของเราเกิด Error ขณะทำงานจนทำให้โปรแกรมหยุดทำงานได้
ใช่แล้ว แต่จำไว้ว่า try except finally ป้องกันได้แค่ Error ที่อาจเกิดขึ้นขณะโปรแกรมทำงานเท่านั้น ไม่สามารถป้องกัน Error ที่เกิดก่อนโปรแกรมทำงานได้ เช่น การเขียนโค้ดผิด ใช้คำสั่งผิด หรือใช้สูตรคำนวณผิด เป็นต้น