การจัดการข้อผิดพลาดในภาษา Python

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

error
error


ข้อผิดพลาดในภาษา Python ในการเขียนโปรแกรมมีอยู่ 2 ชนิด คือ

  1. Syntax Errors
  2. Exceptions

1. Syntax Errors
เป็นการเขียนผิดหลักไวยากรณ์ของภาษา Python มักจะพบบ่อย เมื่อลืมใส่วงเล็บหรือใช้คำสั่งผิด import ไลบรารีผิด หรือนำโค้ด Python 2 มารันบน Python 3

2. Exceptions
แม้ว่าจะเขียนโค้ดโปรแกรมถูกหลักไวยากรณ์ของภาษา Python แต่หากจะมีปัญหาในการดำเนินการทำงานของโปรแกรม เช่น ใช้ชนิดของตัวแปรผิด

การจัดการข้อผิดพลาดในภาษา Python

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

Exception Errors มีดังนี้

1. IOError : ไม่สามารถเปิดไฟล์ได้

try:
    open('a.txt','r')
except IOError:
    print("IOError")
แสดงผลที่ได้ IOError

2. ImportError : ไม่พบไลบรารีที่ระบุไว้

try:
     import mom
except ImportError:
     print("No")
แสดงผลที่ได้ No

3. ValueError : ชนิดของค่าที่ได้จากการตัวดำเนินการหรือฟังก์ชั่นจากอาร์กิวเมนต์ไม่เหมาะสม

try:
    a = int(input("กรอกตัวเลข:"))
except ValueError:
    print("ตัวเลขเท่านั้น")

4. ZeroDivisionError : เป็นข้อผิดพลาดที่พบเมื่อคุณนำค่าจำนวนเต็มหรือจำนวนจริงหารด้วย 0 เพราะการหารด้วย 0 ไม่สามารถหารได้

try:
    a = 6/0
except ZeroDivisionError:
    print("เกิดข้อผิดพลาดในการแปล")
แสดงผลที่ได้ เกิดข้อผิดพลาดในการแปล

5. KeyboardInterrupt : เมื่อการกระทำกับปุ่ม interrupt ของคีย์บอร์ด (Control-C หรือ Delete)

def foo():
    try:
        x=0
        while 1:
            x += 1
        print(x)
    except KeyboardInterrupt:
        print("Interrupted!")
foo()

6. Try ... except ... else : หลังจากที่เรากำหนดการทำงาน Exception Errors แล้ว หากเรารันโปรแกรมแล้วไม่พบข้อผิดพลาดที่เราได้กำหนดไว้ เราสามารถใช้บล็อก else ทำงานตามเงื่อนไขที่กำหนดไว้ได้

try:
    import sys
except ImportError:
    print("ข้อผิดพลาดในการนำเข้า")
else:
    print("ยินดีด้วย")

7. finally : เป็นการกำหนดคำสั่งเมื่อสิ้นสุดการทำงานบล็อก try except โดยบล็อก finally จะทำงานไม่ว่าจะมีข้อผิดพลาดเกิดขึ้นหรือไม่ก็ตาม

try:
    a = 6 / 1
except:
    print("เกิดข้อผิดพลาด")
finally:
    print("ไม่มีข้อพิดพลาด")

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
สอบถามเกี่ยวกับการตั้งค่า Jabber phpBB3.2.x
โดย AePongsak จ 22 ม.ค. 2018 5:54 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
0
8
จ 22 ม.ค. 2018 5:54 pm โดย AePongsak
เสือชีตาห์ Vs โปรแกรมเมอร์
โดย Before Dong จ 22 ม.ค. 2018 11:14 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
19
จ 22 ม.ค. 2018 11:31 am โดย Before Dong
งานประจำวันที่ 22 มกราคม 2561
โดย Parichat จ 22 ม.ค. 2018 9:57 am บอร์ด MT21 - ปาริชาติ รัตโณภาส
1
7
จ 22 ม.ค. 2018 7:20 pm โดย Parichat
งานประจำวันที่ 22 มกราคม 2561
โดย Four จ 22 ม.ค. 2018 9:48 am บอร์ด MT22 - อิษยา งามสอาด
1
32
จ 22 ม.ค. 2018 11:23 am โดย Four
งานประจำวันที่ 22 มกราคม 2561
โดย Jom07 จ 22 ม.ค. 2018 9:47 am บอร์ด MT23 - สุพรรษา พูลตา
2
19
จ 22 ม.ค. 2018 11:01 am โดย AePongsak
งานประจำวันที่ 19 มกราคาม 2561
โดย Parichat ศ 19 ม.ค. 2018 8:52 am บอร์ด MT21 - ปาริชาติ รัตโณภาส
1
8
ศ 19 ม.ค. 2018 7:33 pm โดย Parichat
งานประจำวันที่ 19 มกราคม 2561
โดย Jom07 ศ 19 ม.ค. 2018 8:43 am บอร์ด MT23 - สุพรรษา พูลตา
1
26
ศ 19 ม.ค. 2018 9:20 am โดย Jom07
งานประจำวันที่ 19 มกราคม 2561
โดย Four ศ 19 ม.ค. 2018 8:42 am บอร์ด MT22 - อิษยา งามสอาด
4
25
ศ 19 ม.ค. 2018 6:43 pm โดย Four
ตัวแปรชนิด Tuple
โดย Four พฤ 18 ม.ค. 2018 5:18 pm บอร์ด Python Knowledge
0
35
พฤ 18 ม.ค. 2018 5:18 pm โดย Four
ขอสอบถามเรื่องความแตกต่างของฟังก์ชั่นvariant_pow()กับฟังก์ชั่น pow()
โดย Parichat พฤ 18 ม.ค. 2018 1:58 pm บอร์ด Programming - PHP
0
31
พฤ 18 ม.ค. 2018 1:58 pm โดย Parichat
อยากได้โปรแกรม command แบบ cmd ที่เก็บ history ได้ค่ะช่วยเเนะนำหน่อย
โดย thatsawan พฤ 18 ม.ค. 2018 11:18 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
60
พฤ 18 ม.ค. 2018 7:18 pm โดย thatsawan
0vsNULL
โดย Before Dong พฤ 18 ม.ค. 2018 10:32 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
45
พฤ 18 ม.ค. 2018 2:51 pm โดย Before Dong
งานประจำวันที่ 18 มกราคม 2561
โดย Parichat พฤ 18 ม.ค. 2018 9:38 am บอร์ด MT21 - ปาริชาติ รัตโณภาส
1
14
พฤ 18 ม.ค. 2018 7:16 pm โดย Parichat
งานประจำวันที่ 18 มกราคม 2561
โดย Jom07 พฤ 18 ม.ค. 2018 9:27 am บอร์ด MT23 - สุพรรษา พูลตา
2
34
พฤ 18 ม.ค. 2018 6:49 pm โดย Before Dong
งานประจำวันที่ 18 มกราคม 2561
โดย Four พฤ 18 ม.ค. 2018 9:24 am บอร์ด MT22 - อิษยา งามสอาด
1
23
พฤ 18 ม.ค. 2018 11:44 am โดย Four
VDO สอนพัฒนา Componet Joomla ภาษาอังกฤษ By Mindphp Developer Team
โดย mindphp พฤ 18 ม.ค. 2018 6:21 am บอร์ด Joomla Development
0
33
พฤ 18 ม.ค. 2018 6:21 am โดย mindphp
Ozio Gallery-Components & Plugins สำหรับช่วยให้ดูภาพที่เผยแพร่บน Googleและวีดีโอจาก Youtube ที่ละเอียด
โดย Parichat พ 17 ม.ค. 2018 7:30 pm บอร์ด Joomla Extension Review
0
54
พ 17 ม.ค. 2018 7:30 pm โดย Parichat
ตัวดำเนินการของตัวแปร List
โดย Four พ 17 ม.ค. 2018 4:35 pm บอร์ด Python Knowledge
0
36
พ 17 ม.ค. 2018 4:35 pm โดย Four
การใช้ Del statement
โดย Four พ 17 ม.ค. 2018 4:03 pm บอร์ด Python Knowledge
0
33
พ 17 ม.ค. 2018 4:03 pm โดย Four
Review Applications 17 มกราคม 2561
โดย Jom07 พ 17 ม.ค. 2018 3:44 pm บอร์ด MT23 - สุพรรษา พูลตา
1
18
พ 17 ม.ค. 2018 6:19 pm โดย Jom07