Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ข้อยกเว้นใน Python คืออะไร?


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

เมื่อสคริปต์ Python ทำให้เกิดข้อยกเว้น สคริปต์ต้องจัดการข้อยกเว้นทันที ไม่เช่นนั้นจะยุติและออก

การจัดการข้อยกเว้น

หากคุณมีรหัสที่น่าสงสัยที่อาจทำให้เกิดข้อยกเว้น คุณสามารถปกป้องโปรแกรมของคุณโดยวางรหัสที่น่าสงสัยใน ลอง :บล็อก. หลังจากลอง:บล็อก ให้ใส่ ยกเว้น :คำสั่ง ตามด้วยบล็อกของโค้ดที่จัดการปัญหาได้อย่างสวยงามที่สุด

ไวยากรณ์

นี่คือไวยากรณ์ง่ายๆ ลอง....ยกเว้น...บล็อกอื่น -

try:
   You do your operations here;
   ......................
except ExceptionI:
   If there is ExceptionI, then execute this block.
except ExceptionII:
   If there is ExceptionII, then execute this block.
   ......................
else:
   If there is no exception then execute this block.

ต่อไปนี้คือประเด็นสำคัญบางประการเกี่ยวกับไวยากรณ์ที่กล่าวถึงข้างต้น -

  • คำสั่ง try ครั้งเดียวสามารถมีได้หลายคำสั่ง ยกเว้นคำสั่ง สิ่งนี้มีประโยชน์เมื่อบล็อกการลองมีคำสั่งที่อาจมีข้อยกเว้นประเภทต่างๆ
  • คุณยังสามารถระบุส่วนคำสั่งทั่วไป ยกเว้น ซึ่งจัดการข้อยกเว้นใดๆ ก็ได้
  • หลังประโยคยกเว้น คุณสามารถรวมประโยคอื่นได้ โค้ดใน else-block จะทำงานหากโค้ดในบล็อก try:ไม่ทำให้เกิดข้อยกเว้น
  • else-block เป็นที่ที่ดีสำหรับโค้ดที่ไม่ต้องลองใช้:การป้องกันของบล็อก

ตัวอย่าง

ตัวอย่างนี้เปิดไฟล์ เขียนเนื้อหาใน ไฟล์ และออกมาอย่างสวยงามเพราะไม่มีปัญหาเลย -

#!/usr/bin/python
try:
   fh = open("testfile", "w")
   fh.write("This is my test file for exception handling!!")
except IOError:
   print "Error: can\'t find file or read data"
else:
   print "Written content in the file successfully"
   fh.close()

ผลลัพธ์

สิ่งนี้ให้ผลลัพธ์ดังต่อไปนี้ -

Written content in the file successfully

ตัวอย่าง

ตัวอย่างนี้พยายามเปิดไฟล์ที่คุณไม่ได้รับอนุญาตให้เขียน ดังนั้นจึงทำให้เกิดข้อยกเว้น -

#!/usr/bin/python
try:
   fh = open("testfile", "r")
   fh.write("This is my test file for exception handling!!")
except IOError:
   print "Error: can\'t find file or read data"
else:
   print "Written content in the file successfully"

ผลลัพธ์

สิ่งนี้ให้ผลลัพธ์ดังต่อไปนี้ -

Error: can't find file or read data

ข้อยกเว้นที่ไม่มีข้อยกเว้น

คุณสามารถใช้คำสั่งยกเว้นโดยไม่มีข้อยกเว้นที่กำหนดไว้ดังต่อไปนี้ -

try:
   You do your operations here;
   ......................
except:
   If there is any exception, then execute this block.
   ......................
else:
   If there is no exception then execute this block.

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

ข้อยกเว้นที่มีข้อยกเว้นหลายข้อ

คุณสามารถใช้คำสั่งยกเว้นคำสั่งเดียวกันเพื่อจัดการกับข้อยกเว้นหลายประการดังนี้ −

try:
   You do your operations here;
   ......................
except(Exception1[, Exception2[,...ExceptionN]]]):
   If there is any exception from the given exception list,
   then execute this block.
   ......................
else:
   If there is no exception then execute this block.

ข้อทดสอบสุดท้าย

คุณสามารถใช้ ในที่สุด :บล็อกพร้อมกับ ลอง :บล็อก. บล็อกสุดท้ายเป็นที่สำหรับวางโค้ดใด ๆ ที่ต้องดำเนินการ ไม่ว่า try-block จะเป็นข้อยกเว้นหรือไม่ก็ตาม ไวยากรณ์ของคำสั่ง try-finally คือ −

try:
   You do your operations here;
   ......................
   Due to any exception, this may be skipped.
finally:
   This would always be executed.
   ......................

คุณไม่สามารถใช้ส่วนประโยคอื่นร่วมกับประโยคสุดท้ายได้

ตัวอย่าง

#!/usr/bin/python
try:
   fh = open("testfile", "w")
   fh.write("This is my test file for exception handling!!")
finally:
   print "Error: can\'t find file or read data"

ผลลัพธ์

หากคุณไม่ได้รับอนุญาตให้เปิดไฟล์ในโหมดเขียน สิ่งนี้จะทำให้เกิดผลลัพธ์ดังต่อไปนี้ -

Error: can't find file or read data

ตัวอย่างเดียวกันสามารถเขียนได้ชัดเจนยิ่งขึ้นดังนี้ −

ตัวอย่าง

#!/usr/bin/python
try:
   fh = open("testfile", "w")
   try:
      fh.write("This is my test file for exception handling!!")
   finally:
      print "Going to close the file"
      fh.close()
except IOError:
   print "Error: can\'t find file or read data"

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