Python แสดงข้อผิดพลาดและข้อยกเว้นเมื่อใดก็ตามที่โค้ดทำงานผิดปกติ &การดำเนินการหยุดกะทันหัน Python มีเครื่องมือในการจัดการสถานการณ์ดังกล่าวโดยใช้วิธีการจัดการข้อยกเว้นโดยใช้คำสั่ง try-except ข้อยกเว้นมาตรฐานบางประการที่พบ ได้แก่ ArithmeticError, AssertionError, AttributeError, ImportError เป็นต้น
การสร้างคลาสข้อยกเว้นที่ผู้ใช้กำหนด
ที่นี่เราสร้างคลาสข้อยกเว้นใหม่เช่น User_Error ต้องได้รับข้อยกเว้นจากคลาส Exception ในตัว ไม่ว่าโดยตรงหรือโดยอ้อม มาดูตัวอย่างที่กำหนดซึ่งมี constructor และ display method ภายในคลาสที่กำหนด
ตัวอย่าง
# class MyError is extended from super class Exception class User_Error(Exception): # Constructor method def __init__(self, value): self.value = value # __str__ display function def __str__(self): return(repr(self.value)) try: raise(User_Error("User defined error")) # Value of Exception is stored in error except User_Error as error: print('A New Exception occured:',error.value)
ผลลัพธ์
A New Exception occured: User defined error
การสร้างคลาสข้อยกเว้นที่ผู้ใช้กำหนด (การสืบทอดหลายรายการ)
ข้อยกเว้นคลาสที่ได้รับจะถูกสร้างขึ้นเมื่อโมดูลเดียวจัดการกับข้อผิดพลาดที่แตกต่างกันหลายรายการ ที่นี่เราสร้างคลาสพื้นฐานสำหรับข้อยกเว้นที่กำหนดโดยโมดูลนั้น คลาสพื้นฐานนี้สืบทอดมาจากคลาสที่กำหนดโดยผู้ใช้หลายตัวเพื่อจัดการกับข้อผิดพลาดประเภทต่างๆ
ตัวอย่าง
# define Python user-defined exceptions class Error(Exception): """Base class for other exceptions""" pass class Dividebyzero(Error): """Raised when the input value is zero""" pass try: i_num = int(input("Enter a number: ")) if i_num ==0: raise Dividebyzero except Dividebyzero: print("Input value is zero, try again!") print()
ผลลัพธ์
Enter a number: Input value is zero, try again!
การสร้างคลาสข้อยกเว้นที่ผู้ใช้กำหนด (ข้อยกเว้นมาตรฐาน)
ข้อผิดพลาดรันไทม์เป็นคลาสที่มีอยู่แล้วภายในซึ่งจะเพิ่มขึ้นเมื่อใดก็ตามที่ข้อผิดพลาดที่สร้างขึ้นไม่อยู่ในหมวดหมู่ที่กล่าวถึง โปรแกรมด้านล่างอธิบายวิธีใช้ข้อผิดพลาดรันไทม์เป็นคลาสพื้นฐานและข้อผิดพลาดที่ผู้ใช้กำหนดเป็นคลาสที่ได้รับ
ตัวอย่าง
# User defined error class Usererror(RuntimeError): def __init__(self, arg): self.args = arg try: raise Usererror("userError") except Usererror as e: print (e.args)
ผลลัพธ์
('u', 's', 'e', 'r', 'E', 'r', 'r', 'o', 'r')
บทสรุป
ในบทความนี้ เราได้เรียนรู้วิธีที่เราประกาศและใช้ข้อยกเว้นที่ผู้ใช้กำหนดเองใน Python 3.x หรือก่อนหน้านั้น