Python ลองยกเว้น
บล็อก นี้try
ให้คุณทดสอบบล็อกของรหัสเพื่อหาข้อผิดพลาด
บล็อกexcept
ช่วยให้คุณจัดการกับข้อผิดพลาดได้
บล็อกelse
ช่วยให้คุณรันโค้ดได้เมื่อไม่มีข้อผิดพลาด
บล็อกfinally
ช่วยให้คุณรันโค้ดได้ โดยไม่คำนึงถึงผลลัพธ์ของบล็อกการลองและยกเว้น
การจัดการข้อยกเว้น
เมื่อเกิดข้อผิดพลาดหรือข้อยกเว้นที่เราเรียกมันว่าปกติ Python จะหยุดและสร้างข้อความแสดงข้อผิดพลาด
ข้อยกเว้นเหล่านี้สามารถจัดการได้โดยใช้try
คำสั่ง:
ตัวอย่าง
บล็อกtry
จะสร้างข้อยกเว้นเนื่องจากx
ไม่ได้กำหนดไว้:
try:
print(x)
except:
print("An exception occurred")
เนื่องจากบล็อกการลองทำให้เกิดข้อผิดพลาด บล็อกยกเว้นจะถูกดำเนินการ
หากไม่มีบล็อกการลอง โปรแกรมจะขัดข้องและทำให้เกิดข้อผิดพลาด:
ตัวอย่าง
คำสั่งนี้จะทำให้เกิดข้อผิดพลาดเนื่องจากx
ไม่ได้กำหนดไว้:
print(x)
ข้อยกเว้นมากมาย
คุณสามารถกำหนดบล็อคข้อยกเว้นได้มากเท่าที่คุณต้องการ เช่น หากคุณต้องการรันบล็อกโค้ดพิเศษสำหรับข้อผิดพลาดชนิดพิเศษ:
ตัวอย่าง
พิมพ์ข้อความหนึ่งหากบล็อกการลองเพิ่ม a NameError
และอีกข้อความหนึ่งสำหรับข้อผิดพลาดอื่นๆ:
try:
print(x)
except NameError:
print("Variable x
is not defined")
except:
print("Something else went
wrong")
อื่น
คุณสามารถใช้else
คำสำคัญเพื่อกำหนดกลุ่มของรหัสที่จะดำเนินการหากไม่มีข้อผิดพลาดเกิดขึ้น:
ตัวอย่าง
ในตัวอย่างนี้try
บล็อกไม่สร้างข้อผิดพลาดใดๆ:
try:
print("Hello")
except:
print("Something went
wrong")
else:
print("Nothing went wrong")
ในที่สุด
บล็อกfinally
หากระบุไว้ จะถูกดำเนินการโดยไม่คำนึงว่าบล็อกการลองจะทำให้เกิดข้อผิดพลาดหรือไม่
ตัวอย่าง
try:
print(x)
except:
print("Something went
wrong")
finally:
print("The 'try except' is finished")
สิ่งนี้มีประโยชน์ในการปิดออบเจ็กต์และล้างทรัพยากร:
ตัวอย่าง
ลองเปิดและเขียนไปยังไฟล์ที่ไม่สามารถเขียนได้:
try:
f = open("demofile.txt")
try:
f.write("Lorum Ipsum")
except:
print("Something went wrong when writing to the file")
finally:
f.close()
except:
print("Something went wrong when opening the
file")
โปรแกรมสามารถดำเนินการต่อได้โดยไม่ต้องเปิดวัตถุไฟล์ไว้
ยกข้อยกเว้น
ในฐานะนักพัฒนา Python คุณสามารถเลือกที่จะโยนข้อยกเว้นหากมีเงื่อนไขเกิดขึ้น
หากต้องการโยน (หรือยก) ข้อยกเว้นให้ใช้raise
คำสำคัญ
ตัวอย่าง
ทำให้เกิดข้อผิดพลาดและหยุดโปรแกรมหาก x ต่ำกว่า 0:
x = -1
if x < 0:
raise Exception("Sorry, no numbers below
zero")
raise
คีย์เวิร์ดถูกใช้เพื่อเพิ่มข้อยกเว้น
คุณสามารถกำหนดชนิดของข้อผิดพลาดที่จะแจ้ง และข้อความที่จะพิมพ์ไปยังผู้ใช้
ตัวอย่าง
เพิ่ม TypeError หาก x ไม่ใช่จำนวนเต็ม:
x = "hello"
if not type(x) is int:
raise TypeError("Only
integers are allowed")