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

     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 ก็จะไม่มีผลใดๆ

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
โปรแกรม Access ช่วยในการออกแบบฐานข้อมูล
โดย Duanghathai Termtem พ 02 ธ.ค. 2020 11:23 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
8
พ 02 ธ.ค. 2020 11:23 pm โดย Duanghathai Termtem
Ubuntu เชื่อมต่อ wifi ไม่ได้ค่ะ แก้ยังไงคะ
โดย bolue พ 02 ธ.ค. 2020 5:21 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
6
21
พ 02 ธ.ค. 2020 6:55 pm โดย bolue
ใช้ sudo su ไม่ได้บน command ubuntu
โดย bolue พ 02 ธ.ค. 2020 3:25 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
5
29
พ 02 ธ.ค. 2020 5:20 pm โดย bolue
โปรแกรม Visio ช่วยออกแบบผังทางเดินเอกสาร
โดย Duanghathai Termtem พ 02 ธ.ค. 2020 10:51 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
27
พ 02 ธ.ค. 2020 10:51 am โดย Duanghathai Termtem
โปรแกรมทางการบัญชี โปรแกรม Express
โดย Duanghathai Termtem อ 01 ธ.ค. 2020 6:56 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
45
อ 01 ธ.ค. 2020 6:56 pm โดย Duanghathai Termtem
Flow Account คืออะไร
โดย Duanghathai Termtem อ 01 ธ.ค. 2020 5:06 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
27
อ 01 ธ.ค. 2020 5:06 pm โดย Duanghathai Termtem
การประยุกต์ใช้โปรแกรม ACL และ Microsoft Excel ช่วยในการตรวจสอบ
โดย Duanghathai Termtem อ 01 ธ.ค. 2020 3:20 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
44
อ 01 ธ.ค. 2020 3:20 pm โดย Duanghathai Termtem
แนวทางแก้ปัญหา php error Uncaught Error: Call to undefined function mysql_real_escape_string() in...
โดย mindphp อ 01 ธ.ค. 2020 2:13 am บอร์ด PHP Knowledge
0
22
อ 01 ธ.ค. 2020 2:13 am โดย mindphp