การจัดการข้อผิดพลาดในภาษา 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("ไม่มีข้อพิดพลาด")

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
งานประจำวันที่ 25 มีนาคม 2562
โดย สริญญา สมสา จ 25 มี.ค. 2019 9:49 am บอร์ด MT32 - นางสาวสริญญา สมสา
1
2
จ 25 มี.ค. 2019 10:01 am โดย สริญญา สมสา
งานประจำวันที่ 25 มีนาคม 2562
โดย napharat079 จ 25 มี.ค. 2019 9:42 am บอร์ด M079 - นภารัตน์ ฐิติกรโกวิท
0
1
จ 25 มี.ค. 2019 9:42 am โดย napharat079
ฟุตบอล-บาสเกตบอล
โดย Nhani ส 23 มี.ค. 2019 7:56 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
16
ส 23 มี.ค. 2019 7:56 pm โดย Nhani
export jar ไปใช้เครื่องอื่นพร้อม database
โดย Saharat Saharat ส 23 มี.ค. 2019 6:46 pm บอร์ด Programming - C/C++ & java & Python
0
26
ส 23 มี.ค. 2019 6:46 pm โดย Saharat Saharat
งานประจำวันที่ 23 มีนาคม 2562
โดย napharat079 ส 23 มี.ค. 2019 9:41 am บอร์ด M079 - นภารัตน์ ฐิติกรโกวิท
3
10
ส 23 มี.ค. 2019 7:08 pm โดย napharat079
งานประจำวันที่ 23 มีนาคม 2562
โดย Four ส 23 มี.ค. 2019 9:08 am บอร์ด M077 - อิษยา งามสอาด
1
4
ส 23 มี.ค. 2019 2:00 pm โดย Four
Q - ผมติดตั้ง โมดูลฟอนต์ (oecn_base_fonts) ไม่ได้ ปัญหานี้เกิดบนเครื่อง Ubuntu 16.04 นะครับ
โดย tatiya ศ 22 มี.ค. 2019 5:51 pm บอร์ด OpenERP - MD-ERP
1
7
ศ 22 มี.ค. 2019 6:08 pm โดย tatiya
วิธีทำให้ผมสวย
โดย สริญญา สมสา ศ 22 มี.ค. 2019 3:30 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
29
ส 23 มี.ค. 2019 7:51 pm โดย Nhani
วิธีสร้าง color palette จากรูปภาพของตัวเองได้ง่ายๆไม่ซ่ำใคร
โดย napharat079 ศ 22 มี.ค. 2019 3:28 pm บอร์ด Graphic design
0
33
ศ 22 มี.ค. 2019 3:28 pm โดย napharat079
อยากทราบวิธีการ เปลี่ยน รูป icon ที่ Tab ของ Browser บน เว็บบอร์ด phpbb
โดย Ittichai_chupol ศ 22 มี.ค. 2019 3:28 pm บอร์ด Programming - PHP
1
33
ศ 22 มี.ค. 2019 3:34 pm โดย mindphp
Stedia Google Game Platform คืออะไร
โดย Ittichai_chupol ศ 22 มี.ค. 2019 2:36 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
30
ศ 22 มี.ค. 2019 2:36 pm โดย Ittichai_chupol
สอนวิธีทำ warp text รูปร่างอักษรแบบเก๋ๆ ด้วย photoshop
โดย napharat079 ศ 22 มี.ค. 2019 1:38 pm บอร์ด Graphic design
0
25
ศ 22 มี.ค. 2019 1:38 pm โดย napharat079
One ui คืออะไร
โดย Ittichai_chupol ศ 22 มี.ค. 2019 1:29 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
25
ศ 22 มี.ค. 2019 1:29 pm โดย Ittichai_chupol
ประโยชน์ของนม
โดย สริญญา สมสา ศ 22 มี.ค. 2019 11:27 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
15
ศ 22 มี.ค. 2019 11:27 am โดย สริญญา สมสา
งานประจำวันที่ 22 มีนาคม 2562
โดย Four ศ 22 มี.ค. 2019 9:04 am บอร์ด M077 - อิษยา งามสอาด
1
6
ศ 22 มี.ค. 2019 6:54 pm โดย Four
งานประจำวันที่ 22 มีนาคม 2562
โดย napharat079 ศ 22 มี.ค. 2019 8:55 am บอร์ด M079 - นภารัตน์ ฐิติกรโกวิท
3
10
ศ 22 มี.ค. 2019 6:56 pm โดย napharat079
งานประจำวันที่ 22 มีนาคม 2562
โดย สริญญา สมสา ศ 22 มี.ค. 2019 8:52 am บอร์ด MT32 - นางสาวสริญญา สมสา
2
11
ศ 22 มี.ค. 2019 6:57 pm โดย สริญญา สมสา
Q - ตอนกดคำนวนแล้วระยะทางไปแสดงทั้ง 2 ช่อง
โดย Parichat พฤ 21 มี.ค. 2019 10:44 pm บอร์ด Joomla Dev
8
21
ศ 22 มี.ค. 2019 4:25 pm โดย tsukasaz
พื้นฐานโปรเเกรม Open ERP
โดย สริญญา สมสา พฤ 21 มี.ค. 2019 9:14 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
35
พฤ 21 มี.ค. 2019 9:14 pm โดย สริญญา สมสา
งานประจำวันที่ 21 มีนาคม 2562
โดย napharat079 พฤ 21 มี.ค. 2019 9:54 am บอร์ด M079 - นภารัตน์ ฐิติกรโกวิท
1
6
พฤ 21 มี.ค. 2019 7:13 pm โดย napharat079