การดักจับประเภทข้อยกเว้นต่าง ๆ ใน Python

ในโค้ดเดียวกันอาจมีความจำเป็นต้อง ดักจับประเภทข้อยกเว้นที่แตกต่างกัน

สมมติว่าเราต้องการดักจับข้อยกเว้นเมื่อ มีการหารด้วยศูนย์ ข้อผิดพลาดประเภทนี้ จะทำให้เกิดข้อยกเว้น:

errorZeroDivisionError: division by zero

เพื่อที่จะดักจับมัน ชื่อของข้อยกเว้นนั้น ควรถูกเขียนไว้ในบล็อก except:

pythontry:
  print(1 / 0)
except ZeroDivisionError:
  print('error: do not divide by zero')

และสมมติว่าเรามีรายการดังนี้:

pythonlst = [1, 2, 3]

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

pythonlst = [1, 2, 3]
try:
  print(lst[4]) # จะแสดง IndexError: list index out of range
except ZeroDivisionError:
  print('error: do not divide by zero')

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

pythontry:
  print(lst[4])
except ZeroDivisionError:
  print('error: do not divide by zero')
except IndexError:
  print('error: elem is not exist')
Задание 1

กำหนดโค้ดต่อไปนี้:

pythontxt = '2'

res1 = txt + 3
res2 = txt1

เขียนโค้ดเพื่อดักจับข้อยกเว้นที่ปรากฏ ในตัวแปร res1 และ res2