ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

     Python (ไพทอน) คือภาษาโปรแกรมคอมพิวเตอร์ ซึ่งแน่นอนว่าในการเขียนโปรแกรมคอมพิวเตอร์แต่ละภาษา ไม่ว่าจะเป็น ภาษาซี ภาษาซีพลัสพลัส หรือไม่ว่าจะเป็นภาษาโปรแกรมไหนๆ ก็จะมีข้อผิดพลาดในการทำงานของโปรแกรม ในบางโปรแกรมนั้นก็อาจจะมีข้อผิดพลาดที่แตกต่างกันออกไป แต่ในบทความนี้เราจะมาพูดถึง 9 ชนิดของข้อผิดพลาดในภาษาไพทอนกัน

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

การระบุชนิดของข้อผิดพลาด

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

try:
    x = int('0')
    y = 1/x
    print(y)
except:
    print('ตัวหารเป็น 0 ไม่ได้')

     จากตัวอย่างข้างบน เราอาจะเข้าใจผิดว่า x น่าจะเป็น 0 ทำให้ข้อผิดพลาดเกิดจาก 1/x แต่ความจริงแล้ว ข้อผิดพลาดเกิดขึ้นตั้งแต่บรรทัด   x = int('0.0') ดังนั้นข้อความที่เรากำหนดในบล็อก except จึงไม่ตรงกับปัญหาที่เกิดขึ้นจริง ดังนั้น จึงมีชนิดข้อผิดพลาดสำหรับการตรวจสอบแบบเจาะจง โดยในภาษาไพทอนมีชนิดของข้อผิดพลาดอยู่ค่อนข้างมาก แต่ในการเขียนโปรแกรมระดับพื้นฐานทั่วไป เราอาจได้นำไปใช้เพียงแค่ไม่กี่อย่างเท่านั้น ซึ่งเราจะยกตัวอย่างเฉพาะอันที่น่าสนใจ คือ 

Exception ข้อผิดพลาดทั่วไป
ValueError เมื่อกำหนดค่าที่ไม่สามารถประมวลผลได้ เช่น x = int('0')
TypeError เมื่อเลือกชนิดข้อมูลที่ไม่สามารถใช้กับโอเปอเรเตอร์ หรือเป็นฟังก์ชันของพารามิเตอร์ไม่ได้ เช่น x = 'x' + 10
ZeroDivisionError  เมื่อหารด้วย 0 เช่น x = 1/0
NameError อ้างชื่อตัวแปรที่ยังไม่ได้สร้างขึ้น
IndexError กำหนดเลขลำดับที่ไม่มีจริง เช่น                              x = [1,2,3] print(x[3])
KeyError ระบุคีย์ที่ไม่มีอยู่จริง เช่น x = {1:1 , 2:2} print(x[3])
ModuleNotFoundError เมื่อไม่มีชื่อโมดูลตามที่ระบุ
AssertionError เมื่อเงื่อนไขของคำสั่ง assert เป็นเท็จ

แนวทางการใช้งาน

try:
    x = int('0')       #คำสั่งที่ต้องการตรวจจับข้อผิดพลาด
    y = 1/x
except ZeroDivisionError as error:    #ชนิดของข้อผิดพลาด และตัวแปร
    print(error)                      #สิงที่จะทำถ้าเกิดข้อผิดพลาดขึ้น

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

Chayapol
, 9 ชนิดของข้อผิดพลาดในภาษาไพทอน - by เทคนิคการเขียน Python,
0 1 0 5
กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
Q - สอบถามทำให้ mouse over ที่ไอคอนรูปวงกลม แล้วให้แสดงรูปที่เป็นข้อความขึ้น
โดย eange08 ศ 05 มี.ค. 2021 4:52 pm บอร์ด Joomla Dev
1
4
ศ 05 มี.ค. 2021 5:47 pm โดย tsukasaz
กลุ่มประเทศผู้ส่งออกข้าว
โดย jataz2 ศ 05 มี.ค. 2021 11:07 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
11
ศ 05 มี.ค. 2021 11:07 am โดย jataz2
Q - พอมี module หรือ plugin ที่เป็นพวก social อย่าง line, ig บ้างไหมค่ะ
โดย eange08 พฤ 04 มี.ค. 2021 5:21 pm บอร์ด Joomla Dev
1
7
พฤ 04 มี.ค. 2021 5:26 pm โดย tsukasaz
reboot เครื่องไม่ได้ครับ
โดย chakirin.bfds พฤ 04 มี.ค. 2021 12:25 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
34
พฤ 04 มี.ค. 2021 3:14 pm โดย chakirin.bfds
แก้ css ส่วน padding ด้วย override แล้วไม่เปลี่ยนตาม
โดย eange08 พ 03 มี.ค. 2021 4:43 pm บอร์ด Joomla Development
1
22
พ 03 มี.ค. 2021 4:47 pm โดย tsukasaz
Joomla PDPA ใช้ EB Sticky Cookie Notice โมดูล แสดงแจ้งเตือนการเก็บข้อมูล Cookie ของผู้ใช้งาน
โดย tsukasaz พ 03 มี.ค. 2021 4:39 pm บอร์ด Joomla Extension Review
0
21
พ 03 มี.ค. 2021 4:39 pm โดย tsukasaz
อัพเดทหรือยัง? ปรับปรุงเรื่องความปลอดภัย 9 จุด ใน Joomla 3.9.25
โดย tsukasaz พ 03 มี.ค. 2021 12:28 pm บอร์ด MindPHP News & Feedback
0
43
พ 03 มี.ค. 2021 12:28 pm โดย tsukasaz
B - เปิดหน้าเว็บด้วย template เป็น Shaper_megadeal_ii แล้ว Error 404
โดย eange08 พ 03 มี.ค. 2021 12:04 pm บอร์ด เว็บไซต์ Rnyard - Tester
2
7
พ 03 มี.ค. 2021 7:25 pm โดย tsukasaz