Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ข้อยกเว้นคอนกรีตใน Python


มีข้อยกเว้นทั่วไปบางประการในหลาม ข้อยกเว้นเหล่านี้มักจะเกิดขึ้นในโปรแกรมต่างๆ สิ่งเหล่านี้อาจเพิ่มขึ้นโดยโปรแกรมเมอร์อย่างชัดเจนหรือล่าม python สามารถยกข้อยกเว้นประเภทนี้โดยปริยาย ข้อยกเว้นบางประการ ได้แก่ −

ข้อผิดพลาดในการยืนยันข้อยกเว้น

AssertionError อาจเพิ่มขึ้นเมื่อคำสั่งยืนยันล้มเหลว ใน python มีบางส่วน เราสามารถตั้งค่าคำสั่ง assert ในโค้ดของเราได้ คำสั่งยืนยันจะต้องเป็นจริงเสมอ หากเงื่อนไขล้มเหลว มันจะเพิ่ม AssertionError

โค้ดตัวอย่าง

คลาส MyClass:def __init__(self, x):self.x =x assert self.x> 50 myObj =MyClass(5)

ผลลัพธ์

<ก่อนหน้า>------------------------------------------------------------- ---------------------------- AssertionError Traceback (การโทรล่าสุดล่าสุด) ใน ( ) 4 ยืนยัน self.x> 50 5 ----> 6 myObj =MyClass(5) in __init__(self, x) 2 def __init__(self, x):3 self.x =x ----> 4 ยืนยัน self.x> 50 5 6 myObj =MyClass(5)AssertionError:

ข้อผิดพลาดแอตทริบิวต์ข้อยกเว้น

ข้อผิดพลาดของแอตทริบิวต์อาจเกิดขึ้นเมื่อเราพยายามเข้าถึงแอตทริบิวต์บางอย่างของคลาส แต่ไม่มีอยู่ในนั้น

โค้ดตัวอย่าง

คลาสพอยต์:def __init__(self, x=0, y=0):self.x =x self.y =y def getpoint(self):print('x=' + str(self.x)) print('y=' + str(self.y)) print('z=' + str(self.z))pt =point(10, 20)pt.getpoint()

ผลลัพธ์

<ก่อนหน้า>x=10y=20----------------------------- --------------------------------- AttributeError Traceback (การโทรล่าสุดล่าสุด) ใน () 10 11 pt =point(10, 20)---> 12 pt.getpoint() ใน getpoint(self) 7 print('x=' + str( self.x)) 8 พิมพ์('y=' + str(self.y)) ----> 9 พิมพ์('z=' + str(self.z)) 10 11 pt =จุด (10, 20) AttributeError:วัตถุ 'point' ไม่มีแอตทริบิวต์ 'z'

ข้อผิดพลาดในการนำเข้าข้อยกเว้น

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

โค้ดตัวอย่าง

จากการนำเข้าคณิตศาสตร์ abcd def __init__(self, x=0, y=0):

ผลลัพธ์

<ก่อนหน้า>------------------------------------------------------------- ----------------------------ImportError Traceback (การโทรล่าสุดล่าสุด) ใน ( ) ----> 1 จากการนำเข้าคณิตศาสตร์ abcdImportError:ไม่สามารถนำเข้าชื่อ 'abcd'

โมดูลข้อยกเว้นNotFoundError

เป็นคลาสย่อยของ ImportError เมื่อไม่พบโมดูล ข้อผิดพลาดนี้อาจเพิ่มขึ้น นอกจากนี้ยังสามารถยกเมื่อ ไม่มี พบได้ใน sys.modules

โค้ดตัวอย่าง

นำเข้า abcd

ผลลัพธ์

<ก่อนหน้า>------------------------------------------------------------- ---------------------------- โมดูล NotFoundError Traceback (การโทรล่าสุดล่าสุด) ใน ( ) ----> 1 นำเข้า abcdModuleNotFoundError:ไม่มีโมดูลชื่อ 'abcd'

ข้อผิดพลาดดัชนีข้อยกเว้น

ข้อผิดพลาดของดัชนีอาจเพิ่มขึ้นเมื่อตัวห้อยของลำดับ (List, Tuple, Set ฯลฯ) อยู่นอกช่วง

โค้ดตัวอย่าง

myList =[10, 20, 30, 40]print(str(myList[5]))

ผลลัพธ์

<ก่อนหน้า>------------------------------------------------------------- ----------------------------IndexError Traceback (การโทรล่าสุดล่าสุด) ใน ( ) 1 myList =[10, 20, 30, 40]----> 2 print(str(myList[5]))IndexError:รายการดัชนีอยู่นอกช่วง

ข้อผิดพลาดการเรียกซ้ำของข้อยกเว้น

RecursionError เป็นข้อผิดพลาดรันไทม์ เมื่อเกินความลึกของการเรียกซ้ำสูงสุดแล้วจะเพิ่มขึ้น

โค้ดตัวอย่าง

def myFunction():myFunction()myFunction()

ผลลัพธ์

<ก่อนหน้า>------------------------------------------------------------- ---------------------------- RecursionError Traceback (การโทรล่าสุดล่าสุด) ใน ( ) 2 myFunction() 3 ----> 4 myFunction() ใน myFunction() 1 def myFunction():----> 2 myFunction() 3 4 myFunction().. . ซ้ำ 1 เฟรมสุดท้ายจากเฟรมด้านล่าง ... ใน myFunction() 1 def myFunction():----> 2 myFunction() 3 4 myFunction()RecursionError:การเรียกซ้ำสูงสุด เกินความลึก

ข้อยกเว้น StopIteration

ใน python เราสามารถรับข้อผิดพลาด StopIteration โดยวิธีการ inbuilt ที่เรียกว่า next() เมื่อตัววนซ้ำหนึ่งไม่มีองค์ประกอบเพิ่มเติม เมธอด next() จะทำให้เกิดข้อผิดพลาด StopIteration

โค้ดตัวอย่าง

myList =[10, 20, 30, 40]myIter =iter(myList) ในขณะที่ True:print(next(myIter))

ผลลัพธ์

<ก่อน>10203040--------------------------------------------- ------------------------------------ StopIteration Traceback (การโทรล่าสุดล่าสุด) ใน () 2 myIter =iter(myList) 3 while True:----> 4 print(next(myIter))StopIteration:

ข้อผิดพลาดในการเยื้องข้อยกเว้น

เมื่อมีการย่อหน้าที่ไม่ถูกต้องในรหัสหลาม มันจะทำให้เกิดข้อผิดพลาดประเภทนี้ มันรับช่วง SyntaxError คลาสของไพธอน

โค้ดตัวอย่าง

for i in range(10):print("The value of i:" + str(i))

ผลลัพธ์

ไฟล์ "" พิมพ์บรรทัดที่ 2 ("ค่าของ i:" + str(i)) ^IndentationError:คาดว่าจะมีการเยื้องบล็อก

ข้อผิดพลาด TypeError

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

โค้ดตัวอย่าง

muList =[10, 20, 30, 40]print(myList[1.25])

ผลลัพธ์

<ก่อนหน้า>------------------------------------------------------------- ---------------------------- TypeError Traceback (การโทรล่าสุดล่าสุด) ใน <โมดูล> ( ) 1 muList =[10, 20, 30, 40]----> 2 print(myList[1.25])TypeError:list indexs must be integers or slices, not float

ข้อยกเว้น ZeroDivisionError

เมื่อมีสถานการณ์ที่ตัวส่วนเป็น 0 (ศูนย์) สำหรับปัญหาการหาร จะทำให้เกิด ZeroDivisionError

โค้ดตัวอย่าง

พิมพ์(5/0)

ผลลัพธ์

<ก่อนหน้า>------------------------------------------------------------- ---------------------------- ZeroDivisionError Traceback (การโทรล่าสุดล่าสุด) ใน ( ) ----> 1 พิมพ์ (5/0) ZeroDivisionError:หารด้วยศูนย์