Python ลองยกเว้นฟังก์ชันที่อธิบายด้วยตัวอย่าง
เผยแพร่แล้ว: 2021-11-22การเขียนโปรแกรมมีบทบาทสำคัญในการทำงานหลายอย่างในยุคปัจจุบัน ไม่ว่าจะในด้านการวิจัยหรือด้านธุรกิจ แอปพลิเคชันของการเขียนโปรแกรมสามารถเห็นได้ทุกที่ Python เป็นภาษาโปรแกรมอย่างหนึ่งที่ใช้กันอย่างแพร่หลายในชีวิตประจำวันของผู้คนแทบทุกคน แน่นอนว่าสิ่งนี้ขึ้นอยู่กับโปรแกรมที่กำลังพัฒนาและดำเนินการ ไม่ว่าจะเป็นในแมชชีนเลิร์นนิง การพัฒนาเว็บ การพัฒนาซอฟต์แวร์ หรือโปรแกรมการศึกษาใดๆ ส่วนใหญ่มักเป็น Python ที่โปรแกรมเมอร์ใช้
อย่างไรก็ตาม สำหรับโปรแกรมใดๆ ที่ได้รับการออกแบบ มีโอกาสที่บางครั้งข้อผิดพลาดอาจเกี่ยวข้องกับโปรแกรมดังกล่าว ข้อผิดพลาดเหล่านี้สามารถกำหนดโดยผู้ใช้หรือค่าเริ่มต้นบางอย่างภายในโปรแกรมเอง โปรแกรมที่เขียนด้วยภาษาโปรแกรม python สามารถยุติการทำงานได้ทุกเมื่อที่ตรวจพบข้อผิดพลาดในโค้ด บทความนี้จะอธิบายข้อยกเว้นที่เกิดขึ้นในการเขียนโปรแกรม python และวิธีจัดการโดยใช้ฟังก์ชัน try andยกเว้น ในการเขียนโปรแกรมหลาม ข้อผิดพลาดสองประเภทส่วนใหญ่เกิดขึ้น ได้แก่ ข้อผิดพลาดทางไวยากรณ์และข้อยกเว้น
สารบัญ
ข้อยกเว้นและข้อผิดพลาดทางไวยากรณ์
รูปแบบข้อผิดพลาดหลามที่พบบ่อยที่สุดรูปแบบหนึ่งคือข้อผิดพลาดทางไวยากรณ์ สิ่งเหล่านี้เรียกว่าข้อผิดพลาดในการแยกวิเคราะห์ ลูกศรเล็กๆ ใช้เพื่อชี้ข้อผิดพลาดโดย parser
ข้อผิดพลาดอีกรูปแบบหนึ่งคือข้อยกเว้นใน python มีบางกรณีที่ไวยากรณ์ของโปรแกรมยังคงเหมือนเดิม แต่มีข้อผิดพลาดบางอย่างปรากฏขึ้นทุกครั้งที่โปรแกรมถูกเรียกใช้งาน ข้อผิดพลาดเหล่านี้ที่ตรวจพบเมื่อดำเนินการจะเรียกว่าข้อยกเว้น
ตัวอย่างของข้อผิดพลาดข้อยกเว้นแสดงอยู่ด้านล่าง:
1. แป้นพิมพ์ขัดจังหวะ:
ข้อผิดพลาดประเภทนี้เกิดขึ้นทุกครั้งที่การป้อนข้อมูลของผู้ใช้ถูกขัดจังหวะผ่านการกดปุ่มบนแป้นพิมพ์ที่ไม่ต้องการ ส่วนใหญ่ไม่จำเป็นต้องใช้คีย์และผู้ใช้กดผิดพลาด
2. IOError
บางครั้ง มีบางกรณีที่คุณไม่สามารถเปิดไฟล์ได้ และข้อยกเว้นเหล่านี้เกี่ยวข้องกับกรณีดังกล่าว
3. ImportError
เมื่อใดก็ตามที่โปรแกรม python ไม่พบโมดูล ข้อยกเว้นประเภทนี้จะเกิดขึ้น
4. EOFError:
โดยไม่อ่านข้อมูลใดๆ หากไฟล์ถูกโจมตี ข้อยกเว้นดังกล่าวจะเกิดขึ้น
5. ValueError
ข้อยกเว้นเกี่ยวข้องกับฟังก์ชันในตัว เมื่อใดก็ตามที่ฟังก์ชันดังกล่าวได้รับอาร์กิวเมนต์ที่ไม่ถูกต้อง ข้อยกเว้นเหล่านี้จะเกิดขึ้น
ข้อผิดพลาดทางไวยากรณ์เกิดขึ้นจากการตรวจหาคำสั่งที่ไม่ถูกต้องในโปรแกรมหลาม ต่อไปนี้คือตัวอย่างเพื่อแสดงการสร้างข้อผิดพลาดทางไวยากรณ์:
>>> พิมพ์( 0 / 0 ))
ไฟล์ “<stdin>” บรรทัดที่ 1
พิมพ์( 0 / 0 ))
^
SyntaxError: ไวยากรณ์ไม่ถูกต้อง
สามารถสังเกตได้ว่ามีลูกศรในโปรแกรมด้านบนและระบุตำแหน่งที่ parser ตรวจพบข้อผิดพลาด นอกจากนี้ยังมีวงเล็บสองอันในโค้ดซึ่งส่งผลให้มีรูปแบบที่ไม่ถูกต้อง ดังนั้นจึงมีข้อผิดพลาดทางไวยากรณ์ คุณสามารถลบวงเล็บเหลี่ยมและรันโค้ดได้อีกครั้ง
การเรียกใช้โปรแกรมหลังจากถอดวงเล็บออกจะแสดงข้อยกเว้น "ZeroDivisionError" เนื่องจากไวยากรณ์ของโค้ดถูกต้อง แต่ก็ยังมีข้อผิดพลาดอยู่ ข้อผิดพลาดประเภทนี้ที่เกิดจากรหัสไวยากรณ์ที่ถูกต้องเรียกว่าข้อยกเว้น
โปรแกรมจะส่งผลให้บรรทัด “ZeroDivisionError: การหารจำนวนเต็มหรือโมดูโลด้วยศูนย์” นี่เป็นบรรทัดสุดท้ายของโปรแกรม และแสดงข้อยกเว้นที่โปรแกรมสร้างขึ้น คุณสามารถสังเกตได้ว่า python ไม่เพียงแต่กล่าวถึงข้อผิดพลาดในการยกเว้นเท่านั้น แต่จะอธิบายและแสดงประเภทข้อยกเว้นแทน
การจัดการข้อยกเว้นผ่านการลองยกเว้นข้อ
แนวคิดในการจัดการข้อยกเว้นใน python เรียกว่าการจัดการข้อยกเว้น สามารถเขียนโปรแกรมที่สามารถจัดการกับข้อยกเว้นบางประเภทได้ ตัวอย่างของการจัดการข้อยกเว้นแสดงในภาพด้านล่าง:
รหัสด้านบนนำมา จาก https://docs.python.org/3/tutorial/errors.html
ในโปรแกรมข้างต้น ผู้ใช้จะถูกขอให้ป้อนจำนวนเต็มที่ถูกต้องเป็นอินพุต แต่แทนที่จะเป็นจำนวนเต็มที่ถูกต้อง มีการหยุดชะงักที่ฝั่งผู้ใช้ เมื่อใดก็ตามที่พบการหยุดชะงักของผู้ใช้ประเภทนี้ จะมีข้อยกเว้นประเภทหนึ่งเกิดขึ้นจากโปรแกรม python ซึ่งเป็นข้อยกเว้นของ “KeyboardInterrupt”
หลามพยายามยกเว้นบล็อกที่ใช้ในการจับและจัดการข้อยกเว้นที่เกิดขึ้นในโปรแกรมหลาม รหัสที่อยู่ด้านล่างคำสั่ง try จะดำเนินการเหมือนโปรแกรมปกติ ในเวลาเดียวกัน โปรแกรมที่มีอยู่ในคำสั่งยกเว้นคือการตอบสนองหลักของโปรแกรมต่อข้อยกเว้นรูปแบบใดๆ
จากตัวอย่างที่กล่าวถึงข้างต้นในหัวข้อ “ข้อยกเว้นและข้อผิดพลาดทางไวยากรณ์” สังเกตได้ว่าเกิดข้อผิดพลาดเมื่อใช้ไวยากรณ์ที่ไม่ถูกต้องในโค้ด อย่างไรก็ตาม หากไม่มีการจัดการข้อยกเว้นที่เหมาะสม โปรแกรมก็จะยุติลง ส่วนใหญ่เป็นหน้าที่ของข้อยกเว้นในการตัดสินใจว่าโปรแกรมควรตอบสนองอย่างไรในกรณีที่มีข้อยกเว้น
คำสั่งของ try และยกเว้น ใช้สำหรับจัดการข้อผิดพลาดใน python เมื่อใดก็ตามที่เกิดข้อผิดพลาดภายในโค้ดของ python คำสั่งเหล่านี้จะใช้สำหรับจัดการกับสิ่งเหล่านั้น มีโค้ดแยกสำหรับฟังก์ชันลองและฟังก์ชันยกเว้น รหัสภายในบล็อกการลองช่วยในการตรวจสอบโปรแกรมว่ามีข้อผิดพลาดหรือไม่ ดังนั้น เมื่อใดก็ตามที่ไม่มีข้อผิดพลาดในโปรแกรม โค้ดในบล็อกการลองจะถูกดำเนินการ รหัสภายในบล็อกยกเว้นจะทำงานเมื่อตรวจพบข้อผิดพลาดในบล็อกก่อนหน้าของรหัส มีไวยากรณ์เฉพาะสำหรับการเรียกใช้รุ่นทดลองและกลุ่มคำสั่งยกเว้นในภาษาการเขียนโปรแกรมหลาม
ไวยากรณ์ของฟังก์ชันลองยกเว้นใน Python:
พยายาม:
# รหัสบางส่วน
ยกเว้น :
# ดำเนินการหากมีข้อผิดพลาดในการ
#ลองบล็อค
การทำงานของงบทดลอง
ให้เราเข้าใจการทำงานของบล็อกทดลองก่อน ต่อไปนี้คือขั้นตอนสองสามขั้นตอนที่จะกำหนดการทำงานของบล็อกของโค้ดภายในบล็อกการลอง
- ประโยค "ลอง" จะดำเนินการก่อน ซึ่งหมายความว่าโค้ดที่อยู่ระหว่างการลองและส่วนคำสั่งยกเว้นจะถูกดำเนินการก่อน
- มีการตรวจสอบข้อยกเว้น ดังนั้น หากตรวจไม่พบข้อผิดพลาดหรือข้อยกเว้น จะมีการดำเนินการเพียงคำสั่งทดลองเท่านั้น ในเวลาเดียวกัน ประโยคยกเว้น จะหยุดทำงาน
- ในกรณีที่มีข้อยกเว้น โปรแกรมจะข้ามส่วนคำสั่งทดลอง ในกรณีดังกล่าว จะมีการเรียกใช้ส่วนคำสั่งยกเว้น
- อาจมีบางกรณีที่มีข้อยกเว้น แต่ส่วนคำสั่งยกเว้นไม่สามารถจัดการกับข้อยกเว้นนั้นได้ ในกรณีเช่นนี้ ข้อยกเว้นจะถูกส่งต่อไปยังคำสั่งของ try นอกบล็อก หากไม่มีการจัดการข้อยกเว้น โปรแกรมจะหยุดดำเนินการ
- คำสั่งของ try สามารถมีได้มาก ยกเว้นอนุประโยค (มากกว่าหนึ่ง)
สมมติว่าโปรแกรม python พบข้อยกเว้นที่แตกต่างกัน จากนั้นเพื่อระบุตัวจัดการที่แตกต่างกัน หลายตัวยกเว้นบล็อกที่ใช้ในโปรแกรม python ในครั้งเดียว จะมีการดำเนินการตัวจัดการเพียงตัวเดียว แม้แต่ในโปรแกรมไพ ธ อน ข้อยกเว้นหลายรายการสามารถใช้เป็นวงเล็บในข้อยกเว้นได้
บางครั้งอาจมีคลาสอยู่ในคำสั่งยกเว้น
มีการใช้คีย์เวิร์ดใน python ซึ่งก็คือคำว่า “สุดท้าย” คีย์เวิร์ดถูกใช้หรือถูกดำเนินการหลังจากดำเนินการบล็อกการลองและยกเว้น ดังนั้น เมื่อใดก็ตามที่มีการยกเลิกคำสั่ง try เนื่องจากข้อยกเว้นหรือการยกเลิกตามปกติ จะมีการเรียกใช้ try block ในกรณีดังกล่าว
ยกข้อยกเว้น
หลังจากตรวจพบข้อยกเว้น ข้อยกเว้นจะถูกบังคับให้เกิดขึ้นผ่านการเพิ่มข้อยกเว้น ทำได้โดยใช้คำสั่ง "ยก" เป้าหมายที่สำคัญอย่างหนึ่งของคำแถลงการยกคือควรมีการยกข้อยกเว้น
ประเด็นสำคัญบางประการในการสรุปแนวคิดทั้งหมดคือ:
- การดำเนินการของคำสั่งทดลองจะดำเนินต่อไปจนกว่าจะพบข้อยกเว้นแรก
- มันอยู่ในบล็อกของ เว้นแต่ว่าโปรแกรมจะตัดสินใจว่าจะตอบสนองต่อข้อยกเว้นอย่างไร
- สามารถคาดคะเนข้อยกเว้นได้หลายข้อ จากนั้นโปรแกรมจะแยกแยะวิธีการตอบสนองต่อข้อยกเว้นเหล่านั้น
- สามารถโยนข้อยกเว้นได้ตลอดเวลาโดยใช้คำสั่ง "raise"
- คำสั่ง "ยืนยัน" ช่วยให้โปรแกรมทราบว่าตรงตามเงื่อนไขหรือไม่และไม่ตรงตามเงื่อนไข ให้โยนข้อยกเว้นที่จำเป็น
- ส่วนคำสั่ง else อนุญาตให้โปรแกรมเรียกใช้โค้ดเมื่อไม่มีข้อยกเว้นในประโยค "ลอง"
- คำสั่ง "ในที่สุด" รันส่วนของโค้ดที่มีขึ้นเพื่อให้รันตลอดเวลาโดยไม่พบข้อยกเว้นใดๆ ก่อนหน้านี้
บทสรุป
บทความกล่าวถึงข้อผิดพลาดที่อาจเกิดขึ้นในโปรแกรมหลามโดยสังเขป และในกรณีของข้อผิดพลาดพิเศษบางอย่าง โปรแกรมจะแสดงข้อยกเว้น ต้องจัดการข้อยกเว้นเหล่านี้อย่างเหมาะสมเพื่อให้โปรแกรมทำงานได้อย่างราบรื่น การลองและยกเว้นใน python ช่วยให้สามารถจัดการข้อยกเว้นในโปรแกรมได้ รหัสภายใต้คำสั่ง "ลอง" ถูกดำเนินการ หากรันโค้ดไม่สำเร็จ โปรแกรมจะสิ้นสุดที่บรรทัดโค้ดที่สร้างข้อผิดพลาด จากนั้นโค้ด "ยกเว้น" จะทำงาน
รับปริญญาวิศวกรรมซอฟต์แวร์จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว
บล็อกของ try อนุญาตให้ทดสอบบล็อกของโค้ดเพื่อหาข้อผิดพลาดได้ บล็อกยกเว้นอนุญาตให้โปรแกรมจัดการข้อยกเว้นหากมี