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 หรือก่อนหน้านั้น