Python การจัดการข้อยกเว้น: ลอง จับ ในที่สุด & เพิ่ม [ตัวอย่าง]

การจัดการข้อยกเว้นคืออะไร Python?

ข้อยกเว้นคือข้อผิดพลาดที่เกิดขึ้นในขณะที่รันโปรแกรม อย่างไรก็ตามในขณะที่รันโปรแกรม Python สร้างข้อยกเว้นที่ควรได้รับการจัดการเพื่อหลีกเลี่ยงไม่ให้โปรแกรมของคุณเสียหาย ใน Python ภาษา ข้อยกเว้นจะทริกเกอร์โดยอัตโนมัติเมื่อมีข้อผิดพลาด หรือโค้ดของคุณอาจถูกทริกเกอร์และดักจับได้

ข้อยกเว้นระบุว่าถึงแม้เหตุการณ์ดังกล่าวจะเกิดขึ้นได้ แต่เหตุการณ์ประเภทนี้จะเกิดขึ้นไม่บ่อยนัก เมื่อเมธอดไม่สามารถจัดการข้อยกเว้นได้ เมธอดจะถูกส่งไปยังฟังก์ชันผู้เรียก ในที่สุดเมื่อมีการโยนข้อยกเว้นออกจากฟังก์ชันหลัก โปรแกรมจะถูกยกเลิกอย่างกะทันหัน

ตัวอย่างทั่วไปของข้อยกเว้น

  • การหารด้วยศูนย์
  • การเข้าถึงไฟล์ที่ไม่มีอยู่
  • การเพิ่มสองประเภทที่เข้ากันไม่ได้
  • กำลังพยายามเข้าถึงดัชนีที่ไม่มีอยู่ของลำดับ
  • การลบตารางออกจากเซิร์ฟเวอร์ฐานข้อมูลที่ไม่ได้เชื่อมต่อ
  • ถอนเงินผ่านตู้ ATM เกินกว่าจำนวนเงินที่มีอยู่

เหตุใดคุณจึงควรใช้ข้อยกเว้น

ต่อไปนี้เป็นเหตุผลในการใช้ข้อยกเว้นใน Python:

  • การจัดการข้อยกเว้นช่วยให้คุณสามารถแยกโค้ดการจัดการข้อผิดพลาดออกจากโค้ดปกติได้
  • ข้อยกเว้นคือ Python วัตถุ ซึ่งแสดงถึงข้อผิดพลาด
  • เช่นเดียวกับความคิดเห็นเกี่ยวกับโค้ด ข้อยกเว้นจะช่วยให้คุณเตือนตัวเองถึงสิ่งที่โปรแกรมคาดหวัง
  • มันทำให้โค้ดชัดเจนและเพิ่มความสามารถในการอ่าน
  • ช่วยให้คุณกระตุ้นผลที่ตามมาเมื่อการจัดการข้อผิดพลาดเกิดขึ้นในที่เดียวและในลักษณะเดียว
  • ข้อยกเว้นเป็นวิธีที่สะดวกในการจัดการข้อความแสดงข้อผิดพลาด
  • In Pythonคุณสามารถเพิ่มข้อยกเว้นในโปรแกรมได้โดยใช้วิธีการยกข้อยกเว้น
  • การเพิ่มข้อยกเว้นช่วยให้คุณสามารถหยุดการเรียกใช้โค้ดปัจจุบัน และส่งคืนข้อยกเว้นกลับไปตามที่คาดไว้จนกว่าจะได้รับการจัดการ
  • กำลังประมวลผลข้อยกเว้นสำหรับส่วนประกอบที่ไม่สามารถจัดการได้โดยตรง

กฎข้อยกเว้น

ต่อไปนี้เป็นกฎสำคัญบางประการของ Python การจัดการข้อยกเว้น:

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

Python กลไกการจัดการข้อยกเว้น

การจัดการข้อยกเว้นจะถูกจัดการโดยคีย์เวิร์ด 5 คำต่อไปนี้:

  1. ลอง
  2. จับ
  3. ในที่สุด
  4. โยน

Python ลองใช้คำสั่ง

คำสั่ง try ประกอบด้วยคำสำคัญ try ตามด้วยเครื่องหมายทวิภาค (:) และชุดโค้ดที่อาจเกิดข้อยกเว้น มีหนึ่งหรือหลายข้อ

ในระหว่างการดำเนินการของคำสั่ง try หากไม่มีข้อยกเว้นเกิดขึ้น ล่ามจะละเว้นตัวจัดการข้อยกเว้นสำหรับคำสั่ง try ที่ระบุนั้น

ในกรณีที่เกิดข้อยกเว้นใดๆ ในชุดการลอง ชุดการลองนั้นจะหมดอายุและการควบคุมโปรแกรมจะถูกโอนไปยังตัวจัดการข้อยกเว้นที่ตรงกันซึ่งตามหลังชุดการลอง

Syntax:
try:
statement(s)

คำสั่งจับ

บล็อก catch รับอาร์กิวเมนต์ครั้งละหนึ่งรายการ ซึ่งเป็นประเภทของข้อยกเว้นที่มีแนวโน้มที่จะตรวจจับได้ อาร์กิวเมนต์เหล่านี้อาจมีตั้งแต่ประเภทข้อยกเว้นเฉพาะเจาะจงซึ่งสามารถเปลี่ยนแปลงได้ไปจนถึงหมวดหมู่ข้อยกเว้นที่รับทั้งหมด

กฎเกณฑ์สำหรับ catch block:

  • คุณสามารถกำหนด catch block ได้โดยใช้คีย์เวิร์ด catch
  • พารามิเตอร์ Catch Exception จะอยู่ในวงเล็บเสมอ
  • มันแสดงถึงประเภทของข้อยกเว้นที่จับตัวบล็อกเสมอ
  • โค้ดการจัดการข้อยกเว้นถูกเขียนระหว่างเครื่องหมายปีกกา {} สองตัว
  • คุณสามารถวาง catch block หลายอันภายในบล็อกเดียวได้
  • คุณสามารถใช้ catch block ได้หลังจาก try block เท่านั้น
  • ควรเรียงลำดับบล็อก catch ทั้งหมดจากคลาสย่อยถึงข้อยกเว้นซูเปอร์คลาส

ตัวอย่าง:

try
}
catch (ArrayIndexOutOfBoundsException e) {
System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {
System.err.printin("Caught second " + e.getMessage());
}

คำชี้แจงสุดท้ายใน Python

ในที่สุดการบล็อกจะดำเนินการเสมอไม่ว่าจะมีข้อยกเว้นเกิดขึ้นหรือไม่ก็ตาม คำหลักสุดท้ายช่วยให้คุณสร้างบล็อกของโค้ดที่ตามหลังบล็อก try-catch

สุดท้ายนี้ clause เป็นทางเลือก มีจุดมุ่งหมายเพื่อกำหนดการดำเนินการทำความสะอาดซึ่งควรดำเนินการในทุกสภาวะ

try:
    raise KeyboardInterrupt
finally:
    print 'welcome, world!'
Output
Welcome, world!
KeyboardInterrupt

ในที่สุด clause จะถูกดำเนินการก่อนคำสั่ง try

ยกคำชี้แจงใน Python

คำสั่ง Raise ระบุอาร์กิวเมนต์ที่เตรียมใช้งานวัตถุข้อยกเว้น ในที่นี้ เครื่องหมายจุลภาคตามหลังชื่อข้อยกเว้น และอาร์กิวเมนต์หรือทูเพิลของอาร์กิวเมนต์ที่ตามหลังเครื่องหมายจุลภาค

ไวยากรณ์:

raise [Exception [, args [, traceback]]]

ในรูปแบบนี้ อาร์กิวเมนต์เป็นทางเลือก และในขณะที่ดำเนินการ ค่าอาร์กิวเมนต์ข้อยกเว้นจะเป็นไม่มีเสมอไป
ตัวอย่าง:
A Python ข้อยกเว้นอาจเป็นค่าใดๆ เช่น สตริง คลาส หมายเลข หรืออ็อบเจ็กต์ ข้อยกเว้นเหล่านี้ส่วนใหญ่ได้รับการหยิบยกขึ้นมาโดย Python core คือคลาสที่มีอาร์กิวเมนต์ซึ่งเป็นอินสแตนซ์ของคลาส

สำคัญ Python ข้อผิดพลาด

ประเภทข้อผิดพลาด Descriptไอออน
ข้อผิดพลาดทางคณิตศาสตร์ ArithmeticError ทำหน้าที่เป็นคลาสฐานสำหรับข้อยกเว้นทางคณิตศาสตร์ทั้งหมด คลาสนี้จะถูกเรียกใช้งานสำหรับข้อผิดพลาดในการดำเนินการทางคณิตศาสตร์
ข้อผิดพลาดในการนำเข้า ImportError เกิดขึ้นเมื่อคุณพยายามนำเข้าโมดูลที่ไม่มีอยู่ ข้อยกเว้นประเภทนี้เกิดขึ้นหากคุณพิมพ์ชื่อโมดูลหรือโมดูลที่ไม่อยู่ในเส้นทางมาตรฐานผิดพลาด
ดัชนีข้อผิดพลาด IndexErroris เกิดขึ้นเมื่อคุณพยายามอ้างอิงลำดับที่อยู่นอกช่วง
ข้อผิดพลาดที่สำคัญ เมื่อไม่พบคีย์เฉพาะในพจนานุกรม ข้อยกเว้นของ KeyError จะเกิดขึ้น
ชื่อผิดพลาด NameError เกิดขึ้นเมื่อชื่อถูกอ้างถึงในโค้ดที่ไม่เคยมีอยู่ในเนมสเปซท้องถิ่นหรือส่วนกลาง
ค่าข้อผิดพลาด ข้อผิดพลาดของค่าจะเกิดขึ้นเมื่อฟังก์ชันหรือการดำเนินการภายในได้รับอาร์กิวเมนต์ซึ่งอาจเป็นประเภทที่ถูกต้องแต่ไม่มีค่าที่เหมาะสม
EOFerror ข้อผิดพลาดประเภทนี้เกิดขึ้นเมื่อหนึ่งในฟังก์ชันในตัว (input() หรือ raw_input()) ถึงเงื่อนไข EOF โดยไม่อ่านข้อมูลใดๆ
ZeroDivisonError ข้อผิดพลาดประเภทนี้เกิดขึ้นเมื่อหารหรือโมดูลด้วยศูนย์เกิดขึ้นสำหรับประเภทตัวเลขทั้งหมด
IO ผิดพลาด- ข้อผิดพลาดประเภทนี้เกิดขึ้นเมื่อการดำเนินการอินพุต/เอาต์พุตล้มเหลว
ข้อผิดพลาดทางไวยากรณ์ SyntaxErrors เกิดขึ้นเมื่อมีข้อผิดพลาด Python วากยสัมพันธ์
ข้อผิดพลาดการเยื้อง ข้อผิดพลาดนี้เกิดขึ้นเมื่อไม่ได้กำหนดการเยื้องอย่างถูกต้อง

ที่สำคัญอื่นๆ Python ข้อยกเว้น

ข้อยกเว้น Descriptไอออน
เลขคณิตข้อยกเว้น ข้อผิดพลาดทางคณิตศาสตร์ เช่น การหารด้วยศูนย์
ArraylndexOutOfBoundsException ดัชนีอาร์เรย์อยู่นอกขอบเขต
ArrayStoreException การมอบหมายช่วยให้คุณองค์ประกอบอาร์เรย์ของประเภทที่เข้ากันไม่ได้
ClassCastException นักแสดงไม่ถูกต้อง
MlegalMonitorStateException การดำเนินการตรวจสอบที่ผิดกฎหมาย เช่น การรอเธรดที่ปลดล็อค
MlegalStateException สภาพแวดล้อมหรือแอปพลิเคชันอยู่ในสถานะที่ไม่ถูกต้อง
ClassNotFoundException ไม่พบชั้นเรียน
CloneNotSupportedException พยายามโคลนวัตถุที่ไม่ได้ใช้อินเทอร์เฟซ Cloneable
ข้อยกเว้นการเข้าถึงที่ผิดกฎหมาย การเข้าถึงชั้นเรียนถูกปฏิเสธ
ข้อยกเว้นอินสแตนซ์ เกิดขึ้นเมื่อคุณพยายามสร้างวัตถุของอินเทอร์เฟซหรือคลาสนามธรรม
CloneNotSupportedException พยายามโคลนวัตถุที่ไม่ได้ใช้อินเทอร์เฟซ

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

ความผิดพลาด ข้อยกเว้น
ข้อผิดพลาดทั้งหมดใน Python เป็นประเภทที่ไม่ได้เลือก ข้อยกเว้นมีทั้งประเภทที่เลือกและไม่ได้เลือก
เกิดข้อผิดพลาดขณะรันไทม์ซึ่งคอมไพเลอร์ไม่รู้จัก ข้อยกเว้นสามารถกู้คืนได้โดยการจัดการโดยใช้บล็อก try-catch
ข้อผิดพลาดส่วนใหญ่เกิดจากสภาพแวดล้อมที่แอปพลิเคชันทำงานอยู่ แอปพลิเคชันเองทำให้เกิดข้อยกเว้น
ตัวอย่าง:
ข้อผิดพลาด OutofMemory
ตัวอย่าง:
ข้อยกเว้นที่ตรวจสอบ, ข้อยกเว้น SQL, NullPointerException ฯลฯ

สรุป

  • ข้อยกเว้นคือข้อผิดพลาดที่เกิดขึ้นระหว่างการทำงานของโปรแกรม
  • ข้อยกเว้นระบุว่าถึงแม้เหตุการณ์ดังกล่าวจะเกิดขึ้นได้ แต่เหตุการณ์ประเภทนี้จะเกิดขึ้นไม่บ่อยนัก
  • ตัวอย่างทั่วไปของข้อยกเว้นคือ 1) การหารด้วยศูนย์ 2) การเข้าถึงไฟล์ที่ไม่มีอยู่ 3) การเพิ่มประเภทที่เข้ากันไม่ได้อีกสองประเภท
  • ข้อยกเว้นคือ Python วัตถุที่แสดงถึงข้อผิดพลาด
  • คำสั่ง try ประกอบด้วยคำสำคัญ try ตามด้วยเครื่องหมายทวิภาค (:) และชุดโค้ดที่อาจเกิดข้อยกเว้น มีหนึ่งหรือหลายข้อ
  • บล็อก catch รับอาร์กิวเมนต์ครั้งละหนึ่งรายการ ซึ่งเป็นประเภทของข้อยกเว้นที่มีแนวโน้มที่จะตรวจจับได้
  • คำสั่ง Raise ระบุอาร์กิวเมนต์ที่เตรียมใช้งานวัตถุข้อยกเว้น
  • สุดท้ายนี้ block จะดำเนินการเสมอไม่ว่าจะมีข้อยกเว้นเกิดขึ้นหรือไม่ก็ตาม