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

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
MOD_MTB_NEWS_RECENT
เจอปัญหา cannot write to log file pg_upgrade_internal.log ตอนอัพเกรด postgresql
โดย mindphp พฤ 27 ก.ค. 2017 7:21 pm บอร์ด Linux - Web Server
1
6
พฤ 27 ก.ค. 2017 7:21 pm โดย mindphp
สถาบันเทคโนโลยีไทย-ญี่ปุ่น เปิดรับสมัครนักศึกษาใหม่ ป.โท ภาคเรียนที่ 2 ประจำปีการศึกษา 2560 วันนี้ – 4 ต.ค.60
โดย gradtni พฤ 27 ก.ค. 2017 5:06 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
15
พฤ 27 ก.ค. 2017 5:06 pm โดย gradtni
สอบถามปัญหาการเรียกใช้ css ใน phpbb ค่ะ
โดย Ik Kat พฤ 27 ก.ค. 2017 1:48 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
4
22
พฤ 27 ก.ค. 2017 1:48 pm โดย thatsawan
สอบถามเรื่อง json กับ php ครับ
โดย pookpix พฤ 27 ก.ค. 2017 8:55 am บอร์ด Programming - PHP
1
10
พฤ 27 ก.ค. 2017 8:55 am โดย mindphp
สินค้าไม่ขึ้นตามที่ต้องการ
โดย บุคคลทั่วไป พ 26 ก.ค. 2017 7:52 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
1
16
พ 26 ก.ค. 2017 7:52 pm โดย บุคคลทั่วไป
Visibility การกำหนดสิทธิ์ในการเข้าถึงตัวแปร
โดย Ik Kat พ 26 ก.ค. 2017 4:14 pm บอร์ด PHP Knowledge
0
15
พ 26 ก.ค. 2017 4:14 pm โดย Ik Kat
วิธีการสร้าง Function ใช้เอง
โดย Ik Kat พ 26 ก.ค. 2017 3:44 pm บอร์ด PHP Knowledge
0
18
พ 26 ก.ค. 2017 3:44 pm โดย Ik Kat
วิธีการเรียกใช้งาน Class และ Method
โดย Ik Kat พ 26 ก.ค. 2017 3:07 pm บอร์ด PHP Knowledge
0
7
พ 26 ก.ค. 2017 3:07 pm โดย Ik Kat
ไม่สามารถตั้งรอบระยเวลาบัญชีของโปรแกรมบัญชีสรรพากร
โดย บุคคลทั่วไป พ 26 ก.ค. 2017 2:58 pm บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
0
6
พ 26 ก.ค. 2017 2:58 pm โดย บุคคลทั่วไป
วิธีการใช้งาน Array Function เบื้องต้น
โดย Ik Kat พ 26 ก.ค. 2017 2:39 pm บอร์ด PHP Knowledge
0
12
พ 26 ก.ค. 2017 2:39 pm โดย Ik Kat
วิธีการใช้งาน Date Time Function เบื้องต้น
โดย Ik Kat พ 26 ก.ค. 2017 2:11 pm บอร์ด PHP Knowledge
0
11
พ 26 ก.ค. 2017 2:11 pm โดย Ik Kat
วิธีการใช้งาน Math Function เบื้องต้น
โดย Ik Kat พ 26 ก.ค. 2017 1:33 pm บอร์ด PHP Knowledge
0
12
พ 26 ก.ค. 2017 1:33 pm โดย Ik Kat
วิธีการใช้งาน String Function เบื้องต้น
โดย Ik Kat พ 26 ก.ค. 2017 1:10 pm บอร์ด PHP Knowledge
0
9
พ 26 ก.ค. 2017 1:10 pm โดย Ik Kat
ความหมายของฟังก์ชั่น PHP ที่ควรรู้จัก
โดย Ik Kat พ 26 ก.ค. 2017 11:42 am บอร์ด PHP Knowledge
0
15
พ 26 ก.ค. 2017 11:42 am โดย Ik Kat
การ Export รายงานสรุปยอดซื้อ ในโปรแกรมบัญชี Express
โดย pleng พ 26 ก.ค. 2017 10:51 am บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
11
พ 26 ก.ค. 2017 10:51 am โดย pleng
Joomla ออกเวอร์ชั่น 3.7.4 Fix Bug เรื่องความปลอดภัย 2 จุดใหญ่ และ Error ในเวอร์ชั่นก่อนหน้า
โดย mindphp พ 26 ก.ค. 2017 6:51 am บอร์ด PHP News
0
16
พ 26 ก.ค. 2017 6:51 am โดย mindphp
ผมใช้ Odoo9 ผมทำการ Restor มันนานมั้งใช้เวลาเป็นวันเลยครับ
โดย nuattawoot อ 25 ก.ค. 2017 7:58 pm บอร์ด Odoo
2
8
อ 25 ก.ค. 2017 8:23 pm โดย mindphp
ทำไมฉันเข้าเฟสบุกของฉันต้องมีคำว่าเฟสม่ต
โดย คูกูหาที่เกีดบ่อได้ ต้องทำใจรอเนื้อคู่ อ 25 ก.ค. 2017 7:40 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
18
อ 25 ก.ค. 2017 7:40 pm โดย คูกูหาที่เกีดบ่อได้ ต้องทำใจรอเนื้อคู่
รบกวนสอบถามปัญหา SSL กับ woocommerce theme หน่อยครับ
โดย permchai อ 25 ก.ค. 2017 6:55 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
3
17
อ 25 ก.ค. 2017 6:55 pm โดย mindphp
รบกวนสอบถามเกี่ยวกับ SSL กับ woocommerce ครับ
โดย permchai อ 25 ก.ค. 2017 6:51 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
0
12
อ 25 ก.ค. 2017 6:51 pm โดย permchai