หน้าแรก
หน้าแรก
ข้อผิดพลาดทางไวยากรณ์เกิดขึ้นเมื่อ Python ไม่เข้าใจสิ่งที่คุณพูด ข้อผิดพลาดรันไทม์เกิดขึ้นเมื่อ Python เข้าใจสิ่งที่คุณพูด แต่พบปัญหาเมื่อทำตามคำแนะนำของคุณ สิ่งนี้เรียกว่าข้อผิดพลาดรันไทม์เนื่องจากเกิดขึ้นหลังจากโปรแกรมเริ่มทำงาน โปรแกรมหรือโค้ดอาจถูกต้องตามหลักไวยากรณ์และต้องไม่มีข้อผิดพลาดทางไวย
ในโค้ดที่กำหนด มีการสร้างข้อยกเว้นที่กำหนดเอง FooException ซึ่งเป็นคลาสย่อยของข้อยกเว้นระดับซุปเปอร์ เราจะส่งวัตถุสตริงไปยังข้อยกเว้นที่กำหนดเองดังนี้ ตัวอย่าง #foobar.py class FooException(Exception): def __init__(self, text, *args): super ( FooException, self ).__init__ ( text, *args ) self.text =
ที่นี่เรากำลังส่งตัวแปรไปยังข้อยกเว้นที่กำหนด เรากำลังกำหนดข้อยกเว้นแบบกำหนดเอง ExampleException ซึ่งเป็นคลาสย่อยของคลาสฐาน Exception และยังกำหนดเมธอด __init__ ด้วย เราใช้บล็อกลองยกเว้นเพื่อเพิ่มข้อยกเว้นและส่งตัวแปรไปยังข้อยกเว้นดังต่อไปนี้ ตัวอย่าง class ExampleException(Exception): def __init__(s
เราสร้างข้อยกเว้นที่ผู้ใช้กำหนดหรือกำหนดเองโดยการสร้างคลาสข้อยกเว้นใหม่ใน Python แนวคิดคือการสืบทอดคลาสข้อยกเว้นแบบกำหนดเองจากคลาสข้อยกเว้น ข้อยกเว้นในตัวส่วนใหญ่ใช้แนวคิดเดียวกันในการบังคับใช้ข้อยกเว้น ในโค้ดที่กำหนด คุณได้สร้างคลาสข้อยกเว้นที่ผู้ใช้กำหนดเอง นั่นคือ CustomException มันใช้คลาส Exce
เราสามารถบังคับให้เพิ่มข้อยกเว้นโดยใช้คีย์เวิร์ดเพิ่ม นี่คือรูปแบบการเรียกใช้เมธอด “raise” raise [Exception [, args [, traceback]]] โดยที่ ข้อยกเว้น คือชื่อของข้อยกเว้น ตัวเลือก “args” แทนค่าของอาร์กิวเมนต์ข้อยกเว้น อาร์กิวเมนต์ที่เป็นตัวเลือกคือ traceback เป็นอ็อบเจ็กต์ traceback ที่ใช้สำหรับข้อย
ข้อยกเว้นอาจมีอาร์กิวเมนต์ ซึ่งเป็นค่าที่ให้ข้อมูลเพิ่มเติมเกี่ยวกับปัญหา เนื้อหาของอาร์กิวเมนต์แตกต่างกันไปตามข้อยกเว้น คุณจับอาร์กิวเมนต์ของข้อยกเว้นโดยการจัดหาตัวแปรในข้อยกเว้นดังต่อไปนี้ ตัวอย่าง try: b=float(56+78/0) except Exception, Argument: print 'This is the Argument\n', Argument ผ
จนถึงตอนนี้คำสั่ง try จับคู่กับส่วนคำสั่ง ยกเว้นเสมอ แต่ก็มีอีกวิธีในการใช้งานเช่นกัน คำสั่ง try สามารถตามด้วยประโยคสุดท้ายได้ คำสั่งย่อยสุดท้ายเรียกว่าคำสั่งการล้างข้อมูลหรือการยกเลิก เนื่องจากต้องดำเนินการภายใต้สถานการณ์ทั้งหมด กล่าวคือ คำสั่งคำสั่ง สุดท้าย จะถูกดำเนินการเสมอโดยไม่คำนึงว่าจะมีข้อย
เป็นไปได้ที่จะกำหนดข้อยกเว้นหลายรายการด้วยเงื่อนไขเดียวกัน ยกเว้นข้อ หมายความว่าหากล่าม Python พบข้อยกเว้นที่ตรงกัน มันจะรันโค้ดที่เขียนภายใต้ส่วนยกเว้นประโยค โดยทั่วไป ไวยากรณ์สำหรับข้อยกเว้นหลายรายการมีดังนี้ Except(Exception1, Exception2,…ExceptionN) as e: เมื่อเรากำหนดส่วนยกเว้นในลักษณะ
สามารถทำได้โดยทำตามโค้ดต่อไปนี้ try: x,y =7,0 z = x/y except: pass หรือ try: x,y =7,0 z = x/y except Exception: pass รหัสเหล่านี้ข้ามข้อยกเว้นในคำสั่ง try และละเว้นส่วนคำสั่งยกเว้น และไม่ทำให้เกิดข้อยกเว้นใดๆ ความแตกต่างในโค้ดด้านบนคือโค้ดแรกจะจับ KeyboardInterrupt, SystemExit ฯลฯ ซึ่งได้มาจาก
หากเรากำหนดข้อยกเว้นโดยไม่มีข้อยกเว้นก็สามารถจัดการกับข้อยกเว้นทุกประเภทได้ อย่างไรก็ตาม ไม่ใช่แนวทางปฏิบัติในการเขียนโค้ดที่ดีและไม่แนะนำ ตัวอย่าง try: print 'foo'+'qux'+ 7 except: print' There is error' ผลลัพธ์ คุณได้ผลลัพธ์ There is error บล็อกการลองยกเว้นของ Python ประเภ
วิธีการทั่วไปในการจัดการข้อยกเว้นในไพ ธ อนคือการใช้บล็อก ลองยกเว้น เราสามารถรวมส่วนคำสั่งอื่นไว้หลังส่วนคำสั่งยกเว้นได้ คำสั่งในบล็อก else จะดำเนินการหากไม่มีข้อยกเว้นในคำสั่ง try ส่วนคำสั่งทางเลือกอื่นจะถูกดำเนินการถ้าและเมื่อการควบคุมไหลออกจากส่วนท้ายของคำสั่ง try ยกเว้นในกรณีของข้อยกเว้นหรือการดำ
ระหว่างการจัดการกับข้อยกเว้น A หนึ่ง เป็นไปได้ว่าอาจมีข้อยกเว้น B อื่นเกิดขึ้น ในเวอร์ชัน Python 2.0 หากเป็นเช่นนี้ ข้อยกเว้น B จะถูกเผยแพร่ออกไปภายนอก และข้อยกเว้น A จะหายไป เป็นประโยชน์ที่จะทราบเกี่ยวกับข้อยกเว้นทั้งสองเพื่อแก้ปัญหา บางครั้งจะเป็นประโยชน์สำหรับตัวจัดการข้อยกเว้นในการจงใจยกข้อยกเว
เราใช้ตัวสร้างข้อยกเว้นที่เจาะจงที่สุดที่เหมาะกับปัญหาเฉพาะของเรามากกว่าที่จะยกข้อยกเว้นทั่วไป เพื่อตรวจจับข้อยกเว้นเฉพาะของเรา เราจะต้องตรวจจับข้อยกเว้นเฉพาะอื่นๆ ทั้งหมดที่จัดคลาสย่อยนั้น เราควรยกข้อยกเว้นเฉพาะและจัดการกับข้อยกเว้นเฉพาะเดียวกัน ในการยกข้อยกเว้นเฉพาะ เราใช้คำสั่งการยกดังต่อไปนี้ ต
เรานำเข้าโมดูลการบันทึก จากนั้นใช้วิธี logging.exception เพื่อสร้างบันทึกของข้อยกเว้นของไพธอน ตัวอย่าง import logging try: print 'toy' + 6 except Exception as e: logging.exception("This is an exception log") ผลลัพธ์ เราได้ผลลัพธ์ดังต่อไปนี้ ERROR:root:This is an exception log Trace
ในการแทนที่บางสิ่งหรือส่งผ่านอาร์กิวเมนต์พิเศษไปยังข้อยกเว้น เราทำสิ่งนี้ใน modern python: class ValidationError(Exception): def __init__(self, message, errors): super(ValidationError, self).__init__(message) self.errors = errors ด้วยวิธีนี้ เราสามารถส่งต่อพจนานุกรมของข้อความแสดงข้อผิดพลาดไปยังพารา
เราเห็นว่าข้อยกเว้นส่วนใหญ่มีชื่อที่ลงท้ายด้วยคำว่า ข้อผิดพลาด บ่งชี้ว่าเป็นข้อผิดพลาดซึ่งก็คือความหมายของข้อยกเว้นอยู่ดี ข้อผิดพลาดในแง่ที่จำกัดหมายถึงข้อผิดพลาดทางไวยากรณ์ในไพ ธ อนและข้อผิดพลาดที่เกิดขึ้นในขณะทำงานเรียกว่าข้อยกเว้น อย่างที่เราทราบดีว่าคลาสไม่มี คลาส ในชื่อของพวกเขา และตัวแปรที่คล
ข้อความข้อยกเว้นของ Python สามารถบันทึกและพิมพ์ด้วยวิธีต่างๆ ตามที่แสดงในตัวอย่างโค้ดสองตัวอย่างด้านล่าง ในอันแรก เราใช้แอตทริบิวต์ message ของอ็อบเจกต์ยกเว้น ตัวอย่าง try: a = 7/0 print float(a) except BaseException as e: print e.message ผลลัพธ์ integer division or modulo by zero ในกรณีของรหัสที่กำ
เรามีสถานการณ์สมมติที่โค้ดยกเว้นส่วนคำสั่งทำให้เกิดข้อยกเว้น ในรหัสที่กำหนด เราสามารถจัดการกับข้อยกเว้นที่ยกขึ้นโดยยกเว้นข้อดังนี้ ตัวอย่าง import sys try: a = john except: try: 4/0 except: print sys.exc_info() ผลลัพธ์ เราได้ผลลัพธ์ดังต่อไปนี้ "C:/Users/TutorialsPoint1/~.py" (<type
ใช่ในรหัสที่กำหนด err เป็นวัตถุข้อยกเว้น ใน python ทุกอย่างเป็นวัตถุ และทุกอ็อบเจ็กต์มีคุณสมบัติและเมธอด ดังนั้นข้อยกเว้น เช่น รายการ ฟังก์ชัน ทูเพิล ฯลฯ ก็เป็นอ็อบเจกต์เช่นกัน ดังนั้นข้อยกเว้นก็มีคุณลักษณะเช่นเดียวกับวัตถุอื่นๆ แอตทริบิวต์เหล่านี้สามารถตั้งค่าและเข้าถึงได้ดังนี้ มีข้อยกเว้นคลาสฐาน
หากรหัสหลามส่งข้อยกเว้น เราสามารถตรวจจับและพิมพ์ประเภท ข้อความแสดงข้อผิดพลาด การติดตามย้อนกลับ และรับข้อมูล เช่น ชื่อไฟล์และหมายเลขบรรทัดในสคริปต์หลามที่เกิดข้อยกเว้น เราสามารถหาประเภท ค่า พารามิเตอร์การสืบค้นกลับของข้อผิดพลาดได้ Type ให้ประเภทของข้อยกเว้นที่เกิดขึ้น ค่ามีข้อความแสดงข้อผิดพลาด tra