การดักจับข้อยกเว้นใน Python
ใน Python เมื่อเทียบกับภาษาอื่น ๆ มีสถานการณ์มากมายที่ทำให้เกิดข้อยกเว้น
มาดูรายละเอียดเพิ่มเติมกัน สมมติว่าเรามีรายการ:
lst = [1, 2, 3]
ลองอ้างอิงถึงองค์ประกอบที่ไม่มีอยู่ในรายการ:
print(lts[4])
หลังจากรันโค้ด จะแสดงข้อผิดพลาด (ข้อยกเว้น):
IndexError: list index out of range
หากเราต้องการทำงานต่อไปโดยไม่แสดงข้อยกเว้น
ควรดักจับมันด้วยโครงสร้าง try-except
มีไวยากรณ์ดังนี้:
try:
# โค้ดที่อาจทำให้เกิดข้อยกเว้น
except:
# การจัดการข้อผิดพลาด
ในบล็อก try ควรวางโค้ด
ที่อาจมีข้อยกเว้น หาก
ในขณะดำเนินการโค้ดนี้เกิด
สถานการณ์ข้อยกเว้นขึ้น การดำเนินการ
โค้ดจะไม่หยุด แต่จะเปลี่ยนไปทำงานในบล็อก
except ในบล็อกนี้ควร
กำหนดให้แสดงข้อความที่อธิบาย
แก่นแท้ของข้อผิดพลาดที่เกิดขึ้นได้อย่างแม่นยำที่สุด
แต่หากในขณะดำเนินการบล็อก try
ไม่เกิดสถานการณ์ข้อยกเว้นใด ๆ
โค้ดที่มีประโยชน์ก็จะทำงานปกติ ส่วนโค้ด
จากบล็อก except จะไม่ทำงาน
ลองดักจับข้อยกเว้นของเราเมื่ออ้างอิงถึง
องค์ประกอบที่ไม่มีอยู่ในรายการกัน
สำหรับ
การนี้ในบล็อก try ให้วางโค้ดที่
อาจมีข้อผิดพลาด และในบล็อก except
ให้กำหนดให้แสดงบนคอนโซลข้อความ 'error:
elem is not exist':
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
หลังจากรันโค้ด จะแสดง:
'error: elem is not exist'
หลังจากศึกษาโครงสร้าง try-except
สไตล์โค้ดที่คุณเขียนควรเปลี่ยนไป
ตอนนี้ตำแหน่งทั้งหมดที่อาจเกิด
สถานการณ์ข้อยกเว้น จำเป็นต้องห่อหุ้ม
ด้วย try และในบล็อก except
ให้กำหนดการตอบสนองต่อข้อยกเว้นนี้
ถามผู้ใช้สองตัวเลข หาร ตัวหนึ่งด้วยอีกตัวหนึ่ง จับสถานการณ์ข้อยกเว้น การหารด้วยศูนย์
ถามผู้ใช้หนึ่งตัวเลข หา รากที่สองของตัวเลขนี้ จับ สถานการณ์ข้อยกเว้นการหารากที่สอง จากจำนวนลบ
กำหนดรายการ ถามผู้ใช้จำนวนเต็ม รับองค์ประกอบของรายการ โดยใช้เลขลำดับ ที่ผู้ใช้ป้อนเข้ามา จับ สถานการณ์ข้อยกเว้นที่เกิดขึ้น หากผู้ใช้ป้อนตัวเลขนอกช่วง ของรายการ
กำหนดโค้ดต่อไปนี้:
num = '5'
res = num + 2
print(res)
โค้ดนี้มีปัญหาอะไร? แก้ไข ข้อบกพร่องของมัน
กำหนดโค้ดต่อไปนี้:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
โค้ดนี้มีปัญหาอะไร? แก้ไข ข้อบกพร่องของมัน