ดังสุภาษิตที่ว่ากันว่ามีเหตุการณ์ไม่คาดฝันเกิดขึ้นได้เสมอไป เวลาที่เราจะเขียนโปรแกรมก็มักจะไม่ราบรื่นเสมอไป เช่น เวลาเราจะออกไปดูหนัง เราก็ออกไปข้างนอกก่อนแล้วค่อยเดิน ไปโรงหนังแล้วดูจบ เราไปซื้อของ หลังจากดูหนังแล้วเดินกลับบ้าน แต่กลับพบว่าข้างนอกฝนตกหนัก ฝนตกที่นี่เป็นสถานการณ์ที่ไม่ปกติ เราจึงออกแบบโปรแกรม ถึงเวลาที่ต้องเพิ่มวิธีแก้ปัญหาการจัดการข้อยกเว้นนี้
ก่อนอื่นเรามาดู ปัญหาข้อยกเว้น กันก่อน รหัสจะเป็นดังนี้:
number=int(input('กรุณากรอกตัวเลข:'))if15/number>=3:print('ok')else:print('wrong')
ผลลัพธ์ที่ได้:
โปรดป้อนตัวเลข: 3ok โปรดป้อนตัวเลข: 15wrong โปรดป้อนตัวเลข: 0Traceback(mostrecentcalllast):FileC:/Users/test.py,line2,in<module>if15/number>=3:ZeroDivisionError:divisionbyzero
เมื่อตัวส่วนที่เราป้อนเป็น 0 เราจะพบว่าโปรแกรมรายงานข้อผิดพลาด ซึ่งหมายความว่ามีปัญหากับโปรแกรมที่เราเขียน เนื่องจากเราไม่ได้พิจารณาว่าจะต้องทำอย่างไรเมื่อตัวส่วนเป็น 0 จึงเกิดข้อยกเว้นในโปรแกรม ดังนั้นเราจึงเขียนโปรแกรม คุณต้องคำนึงถึงสถานการณ์ที่ผิดปกติที่อาจเกิดขึ้น
นี่เป็นข้อยกเว้นที่เกิดขึ้นเมื่อ เข้าถึงคีย์พจนานุกรม และไม่มีค่าคีย์อยู่
รหัสมีดังนี้:
my_dict={'dotcpp':123}พิมพ์(my_dict['dot'])
ข้อยกเว้นมีดังนี้:
Traceback (mostrecentcalllast): FileC:/Users/test.py,line2,in<module>print(my_dict['dot'])KeyError:'dot'
ข้อยกเว้นประเภทนี้พบได้บ่อยเมื่อเราเรียนรู้ Python เมื่อเรา เข้าถึงองค์ประกอบลำดับ กลไก ข้อยกเว้นนี้จะถูกทริกเกอร์เมื่อค่าดัชนีเกินช่วง โค้ดจะเป็นดังนี้:
my_list=[1,2,3,4,5]พิมพ์(my_list[100])
ข้อยกเว้นมีดังนี้:
Traceback (mostrecentcalllast): FileC:/Users/test.py,line2,in <โมดูล>พิมพ์(my_list[100])IndexError:listindexoutofrange
รายการของเรามีเพียง 5 องค์ประกอบ และข้อยกเว้นนี้จะถูกส่งออกไปหากการเข้าถึงเกินขีดจำกัด
ข้อยกเว้นนี้เกิดขึ้นเมื่อเราใช้ ตัวแปรที่ไม่ได้กำหนด รหัสจะเป็นดังนี้:
name=['www.dotcpp,com']print('ชื่อตัวแปรที่มีอยู่:',name)print('ตัวแปรที่ไม่มีอยู่ dotcpp:',dotcpp)
ข้อยกเว้นมีดังนี้:
ชื่อตัวแปรที่มีอยู่:['www.dotcpp,com']Traceback(mostrecentcalllast):FileC:/Users/Qingyan/PycharmProjects/untitled1/teach/test.py,line3,in<module>print('ตัวแปรที่ไม่มีอยู่ dotcpp: ',dotcpp)NameError:name'dotcpp'isnotdefed
ข้อยกเว้นนี้เกิดขึ้นเมื่อข้อมูลที่ส่งไม่สอดคล้องกับประเภทที่ระบุ ตัวอย่างเช่น เมื่อเราต้องการบวกและลบจำนวนเต็มสองตัว และหนึ่งในนั้นใช้ประเภทสตริง ข้อผิดพลาดนี้จะเกิดขึ้น
รหัสมีดังนี้:
a=10b='dotcpp'พิมพ์(a+b)
ข้อยกเว้นมีดังนี้:
Traceback (mostrecentcalllast): FileC:/Users/test.py,line3,in<module>print(a+b)TypeError:unsupportedoperandtype(s)for+:'int'and'str'
ข้างต้นคือข้อยกเว้นทั่วไปบางส่วน เราอาจพบ ValueError, OSError, AttributeError และข้อยกเว้นอื่นๆ ในกระบวนการเรียนรู้ เมื่อเราพบข้อยกเว้นที่เราไม่รู้จัก เราสามารถสืบค้นเนื้อหาที่เกี่ยวข้องผ่านเอกสารวิธีใช้