ฟังก์ชันกับข้อยกเว้นใน Python
การโยน (throw) ข้อยกเว้นทำได้สะดวกมาก โดยเขียนเงื่อนไขไว้ในฟังก์ชัน
มาสร้างฟังก์ชัน get_sum กัน
ซึ่งจะคืนค่าผลรวมขององค์ประกอบในลิสต์
ก็ต่อเมื่อความยาวของลิสต์น้อยกว่า
หรือเท่ากับ 3 เท่านั้น มิฉะนั้น
ให้โยนข้อยกเว้นของเรา ToBigLength ออกมา:
def get_sum(lst):
if len(lst) <= 3:
return sum(lst)
else:
raise ToBigLength
ทีนี้เรามาส่งลิสต์เข้าไปในฟังก์ชัน get_sum
และพิมพ์ผลลัพธ์ออกมาที่คอนโซล:
lst = [1, 2, 3, 4]
print(get_sum(lst)) # จะได้ 6
นอกจากนี้ในฟังก์ชันยังสามารถกำหนดการดักจับ
ข้อยกเว้นหลายประเภทได้ มาสร้างคลาสข้อยกเว้นอีกคลาสหนึ่ง
ชื่อ ToSmallLength กัน:
class ToSmallLength(Exception):
pass
ทีนี้เรามากำหนดเงื่อนไขในฟังก์ชันว่า
หากความยาวของลิสต์เท่ากับศูนย์ ให้โยน
ToSmallLength ออกมา แต่หาก
ไม่มีข้อยกเว้นใดถูกดักจับเลย
ให้คืนค่าผลรวมขององค์ประกอบทั้งหมดในลิสต์:
def get_sum(lst):
if len(lst) > 3:
raise ToBigLength
if len(lst) == 0:
raise ToSmallLength
else:
return sum(lst)
เพื่อความสะดวก เราสามารถใส่ลิสต์ที่จะ
ถูกส่งเข้ามาเป็นพารามิเตอร์ของฟังก์ชัน,
ตัวฟังก์ชันเอง และการเรียกใช้ฟังก์ชัน
ไว้ในบล็อก try
และวางการดักจับข้อยกเว้นทั้งสองของเรา
ไว้ในบล็อก except:
try:
lst = [1, 2, 3]
res = get_sum(lst)
print(res)
except ToBigLength:
print('error 1')
except ToSmallLength:
print('error 2')
สร้างฟังก์ชันที่รับพารามิเตอร์เป็นตัวเลข
เขียนเงื่อนไขในฟังก์ชันว่า
หากตัวเลขเป็นลบและเท่ากับศูนย์
ให้โยนข้อยกเว้นที่เกี่ยวข้องออกมาตามลำดับ
มิฉะนั้นให้คูณตัวเลขนั้นด้วย 3
ทดสอบการทำงานของฟังก์ชันที่คุณสร้างด้วย
โครงสร้าง try-except
พร้อมกันนี้ ให้ดักจับข้อยกเว้นของคุณด้วย