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

กำหนดการดำเนินการล้างข้อมูลใน Python


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

คำสั่ง "ลอง" ให้ประโยคทางเลือกที่มีประโยชน์มาก ซึ่งมีไว้สำหรับกำหนด 'การดำเนินการล้างข้อมูล' ที่ต้องดำเนินการภายใต้สถานการณ์ใดๆ ตัวอย่างเช่น −

>>> try:
   raise SyntaxError
finally:
   print("Learning Python!")
Learning Python!
Traceback (most recent call last):
   File "<pyshell#11>", line 2, in <module>
      raise SyntaxError
   File "<string>", line None
SyntaxError: <no detail available>

ประโยคสุดท้ายจะดำเนินการไม่ว่าอะไรจะเกิดขึ้น แต่ส่วนคำสั่ง else จะดำเนินการก็ต่อเมื่อไม่มีข้อยกเว้น

ตัวอย่างที่ 1 − ลองพิจารณาตัวอย่างด้านล่าง ที่ทุกอย่างดูดีและเขียนไปยังไฟล์โดยไม่มีข้อยกเว้น (โปรแกรมกำลังทำงานอยู่) จะแสดงผลลัพธ์ต่อไปนี้ -

file = open('finally.txt', 'w')
try:
   file.write("Testing1 2 3.")
   print("Writing to file.")
except IOError:
   print("Could not write to file.")
else:
   print("Write successful.")
finally:
   file.close()
   print("File closed.")

เมื่อเรียกใช้โปรแกรมข้างต้น จะได้รับ -

Writing to file.
Write successful.
File closed.

ตัวอย่างที่ 2 − ลองยกข้อยกเว้นโดยทำให้ไฟล์เป็นแบบอ่านอย่างเดียวและพยายามเขียนลงไป ทำให้เกิดข้อยกเว้น

file = open('finally.txt', 'r')
try:
   file.write("Testing1 2 3.")
   print("Writing to file.")
except IOError:
   print("Could not write to file.")
else:
   print("Write successful.")
finally:
   file.close()
   print("File closed.")

โปรแกรมด้านบนจะให้ผลลัพธ์บางอย่างเช่น −

Could not write to file.
File closed.

ในกรณีที่เรามีข้อผิดพลาด แต่เราไม่ได้ใส่คำสั่งใด ๆ ยกเว้นข้อเพื่อจัดการกับมัน ในกรณีเช่นนี้ การดำเนินการล้างข้อมูล (บล็อกสุดท้าย) จะถูกดำเนินการก่อน จากนั้นคอมไพเลอร์จะแจ้งข้อผิดพลาด มาทำความเข้าใจแนวคิดด้วยตัวอย่างด้านล่างกัน −

ตัวอย่าง

file = open('finally.txt', 'r')
try:
   file.write(4)
   print("Writing to file.")
except IOError:
   print("Could not write to file.")
else:
   print("Write successful.")
finally:
   file.close()
   print("File closed.")

ผลลัพธ์

File closed.
Traceback (most recent call last):
   File "C:/Python/Python361/finally_try_except1.py", line 4, in <module>
      file.write(4)
TypeError: write() argument must be str, not int

จากข้างบนนี้ เราจะเห็นได้ว่าในที่สุด clause จะทำงานเสมอ โดยไม่คำนึงถึงว่ามีข้อยกเว้นเกิดขึ้นหรือไม่