การจัดการข้อยกเว้นคือความสามารถในการปรับแต่งและแสดงข้อความแสดงข้อผิดพลาดสำหรับส่วนต่างๆ ของโปรแกรมที่ไม่สามารถทำงานได้
ไม่ว่าคุณจะกำลังสร้างเว็บไซต์ สร้าง API โมดูล หรือผลิตภัณฑ์อื่นๆ โดยใช้ Python ความสามารถของคุณในการจัดการข้อยกเว้นอย่างมีประสิทธิภาพจะช่วยให้คุณสามารถระบุสาเหตุของข้อผิดพลาดได้อย่างชัดเจน
ที่นี่ เราจะมาดูกันว่าคุณสามารถจัดการกับข้อยกเว้นใน Python ได้อย่างไร
วิธีการจัดการข้อยกเว้นใน Python
เมื่อคุณแจ้งข้อยกเว้น คุณกำลังบอกให้ Python แสดงข้อความทุกครั้งที่บล็อกของโค้ดล้มเหลว การจัดการข้อยกเว้นก็เหมือนกับการบอกให้ใครสักคนลองยกน้ำหนัก และหากทำไม่ได้ ก็ควรแจ้งให้คุณทราบ
อย่างไรก็ตาม ในการยกข้อยกเว้นใน Python คุณจะต้องบอกให้ Python พยายามเรียกใช้บล็อกโค้ดเฉพาะ หากบล็อกนั้นล้มเหลว คุณสามารถขอให้ Python เพิ่มข้อยกเว้นที่กำหนดไว้สำหรับโค้ดที่ล้มเหลวได้
คุณควรใช้ข้อยกเว้นในการเขียนโปรแกรม Python เมื่อใด
ในโอกาสส่วนใหญ่ คุณสามารถปิดบังข้อผิดพลาด Python มาตรฐานได้โดยใช้ข้อยกเว้น แต่คุณต้องระมัดระวังตัวอยู่เสมอ เนื่องจากการทำเช่นนี้อาจทำให้เกิดปัญหาการดีบักได้ ดังนั้น คุณอาจพบว่าเป็นการยากที่จะหาสาเหตุที่แท้จริงของจุดบกพร่องในท้ายที่สุด
ดังนั้น คุณควรใช้ข้อยกเว้นเมื่อคุณได้ทดสอบโค้ดของคุณเพียงพอแล้ว และคุณมั่นใจว่าโค้ดใช้งานได้จริง ท้ายที่สุด แนวทางปฏิบัติที่ดีที่สุดคือใช้เพื่อจัดการกับข้อบกพร่องที่อาจเกิดขึ้นจากจุดสิ้นสุดของผู้ใช้ แทนที่จะเป็นตัวโค้ดเอง
กล่าวอีกนัยหนึ่ง คุณสามารถใช้ข้อยกเว้นเป็นเครื่องมือเตือนเพื่อแนะนำผู้ใช้เกี่ยวกับวิธีการใช้โปรแกรมของคุณ
การจัดการข้อยกเว้น Python
ในการจัดการข้อยกเว้นใน Python คุณต้องแรปโค้ดใน a . ก่อน ลอง...ยกเว้น บล็อก. ในบางครั้ง คุณอาจต้องใส่ a ในที่สุด คำสั่งเพื่อจัดการกับการดำเนินการเพิ่มเติมขึ้นอยู่กับความต้องการของคุณ
แนวคิดการเข้ารหัสของข้อยกเว้น Python โดยทั่วไปมีลักษณะดังนี้:
try:
'code to be executed'
except:
'error message'
ดังที่ได้กล่าวไว้ก่อนหน้านี้ คุณยังสามารถใช้ ในที่สุด ในบล็อกข้อยกเว้น แต่รหัสที่คุณเขียนภายใน a ในที่สุด ข้อเป็นอิสระและทำงานไม่ว่าจะมีข้อยกเว้นหรือไม่
โดยพื้นฐานแล้ว มันจะมีประโยชน์หากคุณมีบล็อกของโค้ดอื่นที่คุณต้องการเรียกใช้อย่างต่อเนื่องโดยไม่คำนึงว่าจะเกิดอะไรขึ้นภายใน ลอง...ยกเว้น บล็อก.
นี่คือตัวอย่าง:
try:
print(9+6)
except:
print('error message')
finally:
print('please restart')
Output:
15
please restart
ในรหัสข้างต้น กรุณาเริ่มต้นใหม่ ทำงานอย่างต่อเนื่องไม่ว่าจะมีข้อยกเว้นหรือไม่ก็ตาม
หนึ่ง อื่น เงื่อนไขยังสามารถปฏิบัติตาม ยกเว้น คำแถลง:
try:
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: B needs to be defined
ลองอีกครั้งด้วยการกำหนด 'B':
try:
B = 5
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: Added successfully! The result is 7
ตัวอย่างข้างต้นเป็นข้อยกเว้นที่ไม่ได้มาตรฐาน แต่คุณสามารถมีข้อยกเว้นที่ชัดเจนกว่านี้ได้เมื่อคุณรวมข้อยกเว้นในตัว (ที่กำหนด) เข้ากับข้อยกเว้นที่ไม่ได้มาตรฐาน:
try:
C = 2 + B
except NameError as err:
print(err, ':', 'B needs to be defined, please')
else:
print(u'Added successfully! The result is %s'%(C))
Output: name 'B' is not defined : B needs to be defined, please
ข้อยกเว้นข้างต้นจะตรวจสอบว่ามี a . หรือไม่ ชื่อผิดพลาด ใน ลอง บล็อก. แล้วพิมพ์มาตรฐาน ชื่อผิดพลาด ข้อยกเว้นก่อน (ไม่ได้กำหนด 'ชื่อ 'B') และสนับสนุนด้วยข้อยกเว้นเป็นลายลักษณ์อักษรของคุณ ('ต้องกำหนด B โปรด')
ที่เกี่ยวข้อง: หลักการเขียนโปรแกรมขั้นพื้นฐานที่โปรแกรมเมอร์ทุกคนต้องรู้
สินค้า amazon ไม่เคยมาถึงแต่บอกว่าส่งแล้ว
และถ้าคุณต้องการจัดการกับข้อยกเว้น คุณสามารถติดตาม a . ได้ ลอง บล็อกที่มีมากมาย ยกเว้น งบ. สิ่งนี้ค่อนข้างสะดวกถ้าคุณ ลอง block มีข้อยกเว้นหลายประการ:
try:
B = 5
C = 2 + B
D = float(6)
F = 7/0
except NameError as err:
print(err,':', 'B needs to be defined, please')
except ValueError as val:
print(val,':', 'You can't convert that data')
except ZeroDivisionError as zeroerr:
print(zeroerr,':', 'You can't divide a number by zero')
else:
print(u'Operation successfull! The results are: %s, %s, and %s'%(C, D, F))
Output: division by zero : You can't divide a number by zero
เกิดอะไรขึ้นถ้าการแบ่งที่ถูกต้อง? ตัวอย่างเช่น แทนที่ F = 7/0 ในรหัสด้านบนด้วย F = 7/5 ให้:
Output: Operation successfull! The results are: 7, 6.0, and 1.4
ข้อยกเว้นที่ผู้ใช้กำหนดใน Python
คุณสามารถสร้างข้อยกเว้นได้เช่นกันและโทรหาพวกเขาในภายหลังในโปรแกรมของคุณ วิธีนี้ช่วยให้คุณให้คำอธิบายเฉพาะของข้อยกเว้นและตั้งชื่อตามที่คุณต้องการ
อย่างไรก็ตาม ทุกข้อยกเว้นที่ผู้ใช้กำหนด (โดยตรงหรือโดยอ้อม) ยังคงมาจาก built-in ข้อยกเว้น คลาสของไพทอน
โค้ดตัวอย่างด้านล่างอ้างอิงถึงฐาน ข้อยกเว้น โดยตรงโดยโทร การทำงานผิดพลาด จากมัน:
class connectionError(RuntimeError):
def __init__(self, value):
self.value = value
try:
raise connectionError('Bad hostname')
except connectionError as err:
print(err.value)
Output: Bad hostname
สังเกตว่า การเชื่อมต่อล้มเหลว ในกรณีนี้ เป็นคลาสที่ผู้ใช้กำหนด ซึ่งคุณสามารถเพิ่มได้ทุกเมื่อที่คุณต้องการในโปรแกรมของคุณ
ที่เกี่ยวข้อง: คู่มือสำหรับผู้เริ่มต้นใช้งานนิพจน์ทั่วไปด้วย Python
คุณสามารถสร้างข้อยกเว้นที่ผู้ใช้กำหนดโดยรับโดยตรงจาก ข้อยกเว้น คลาสพื้นฐาน อย่างไรก็ตาม ข้อยกเว้นด้านล่างป้องกันการลบ 5 จาก 6 และเรียกข้อยกเว้นจากคลาสฐานโดยตรง:
class errors(Exception):
pass
class sixFiveError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
try:
raise sixFiveError(6-5,'This substraction is not allowed')
except sixFiveError as e:
print('There was an error:', e.message)
Output: There was an error: This substraction is not allowed
ในทางปฏิบัติ คุณสามารถใช้ข้อยกเว้นที่คุณกำหนดไว้ก่อนหน้านี้โดยเรียกใช้ในฟังก์ชันอื่น ตัวอย่างเช่น คุณสามารถสร้าง a floatError ที่อนุญาตให้เพิ่มสองทุ่นเท่านั้น:
# First call the base exception classes:
class errors(Exception):
pass
# Next, derive your own exception from the base class:
class FloatError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
# Create a function to add two floats:
def addTwoFloat(a, b):
if (type(a) and type(b)) != float:
raise FloatError(a+b,'Numbers must be float to add')
else:
print(a + b)
addTwoFloat(4, 7)
Output: __main__.FloatError: (11, 'Numbers must be float to add')
เพราะตอนนี้คุณได้กำหนด a FloatError คลาส Python จะเพิ่มมันหากคุณพยายามเพิ่มตัวอักษรที่ไม่ลอยสองตัวโดยใช้ addtwoFloat การทำงาน.
คุณสามารถพิมพ์ FloatError class ในไฟล์ Python เดียวกันกับที่คุณสร้างขึ้นเพื่อดูว่าเกิดอะไรขึ้น:
print(FloatError)
Output:
FloatError อย่างไรก็ตาม ไม่ใช่ข้อยกเว้น Python ในตัว คุณสามารถตรวจสอบได้โดยโทร FloatError ในไฟล์ Python ใหม่ที่คุณไม่ได้สร้างคลาสนี้:
print(FloatError)
Output: NameError: name 'FloatError' is not defined
คุณจะได้รับ ชื่อผิดพลาด เพราะ Python ไม่รู้จักว่าเป็นข้อยกเว้นมาตรฐาน
คุณสามารถลองกำหนดคลาสข้อผิดพลาดอื่น ๆ ด้วยตัวเองเพื่อดูว่ามันทำงานอย่างไร
ทำให้โปรแกรม Python ของคุณใช้งานง่ายขึ้นด้วยข้อยกเว้น
มีข้อยกเว้นมาตรฐานมากมายใน Python แต่คุณสามารถกำหนดของคุณได้เช่นกัน อย่างไรก็ตาม ความง่ายในการใช้โปรแกรมของคุณนั้นขึ้นอยู่กับระดับหนึ่งว่าจะจัดการกับข้อยกเว้นต่างๆ อย่างไร (ไม่ว่าจะเป็นแบบกำหนดโดยผู้ใช้
อย่างไรก็ตาม มีข้อยกเว้นให้คุณกำหนดว่าโปรแกรมของคุณควรทำงานอย่างไรเมื่อผู้ใช้โต้ตอบกับพวกเขา การระบุสาเหตุของข้อผิดพลาดอย่างชัดเจนและรัดกุมยังช่วยให้ผู้ใช้ทราบล่วงหน้าเกี่ยวกับสิ่งที่พวกเขาทำผิด และบางครั้งก็ชี้นำพวกเขาไปในทิศทางที่ถูกต้อง
แบ่งปัน แบ่งปัน ทวีต อีเมล วิธีดีบักโค้ด Python ของคุณเตรียมความรู้ในการสควอชทุกจุดบกพร่องของ Python ในเส้นทางของคุณ
อ่านต่อไป หัวข้อที่เกี่ยวข้อง- การเขียนโปรแกรม
- Python
- บทเรียนการเข้ารหัส
Idowu หลงใหลเกี่ยวกับเทคโนโลยีอัจฉริยะและประสิทธิภาพการทำงานทุกอย่าง ในเวลาว่าง เขาเล่นไปรอบๆ กับการเขียนโค้ดและเปลี่ยนไปเล่นกระดานหมากรุกเมื่อรู้สึกเบื่อ แต่เขาก็ชอบที่จะแยกตัวออกจากงานประจำบ้างเป็นบางครั้ง ความหลงใหลในการแสดงให้ผู้คนได้รู้จักเทคโนโลยีสมัยใหม่กระตุ้นให้เขาเขียนมากขึ้น
เพิ่มเติมจาก Idowu Omisolaสมัครรับจดหมายข่าวของเรา
เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!
คลิกที่นี่เพื่อสมัครสมาชิก