การแก้ไขข้อผิดพลาด�ของโปรแกรม�(Test and Debugging)
หน่วยการเรียนรู้ที่ 8
1
ประเภทของความผิดพลาด
การแก้ไขข้อผิดพลาดด้วย Exception
สาระการเรียนรู้
2
บอกประเภทความผิดพลาดของ Exception ได้
บอกประเภทความผิดพลาดของ Error ได้
อธิบายความแตกต่างระหว่าง Exception กับ Error ได้
อธิบายการใช้งานคำสั่ง try…catch ได้
อธิบายการใช้งานคำสั่ง throws ได้
เขียนโปรแกรมแก้ไขข้อผิดพลาดด้วย Exception ได้
จุดประสงค์การเรียนรู้
1
2
3
5
4
6
ประเภทของความผิดพลาด
ประเภทของ Exception
RunTime Exception เป็นข้อผิดพลาดที่เกิดขั้นตอนการเขียนโปรแกรม เช่น
1
แบ่งออกเป็น 2 ประเภทใหญ่ ๆ ได้ คือ
IO Exception เป็นข้อผิดพลาดที่ภาษา Java กำหนดให้ต้องมีการจัดการหากมีการเรียกใช้เมท็อดที่อาจเกิดข้อผิดพลาดประเภทนี้ เช่น
2
ประเภทของความผิดพลาด
ความแตกต่างระหว่าง Exception กับ Error
Exception
Error
เป็นความผิดพลาดที่ผู้เขียนโปรแกรมไม่ทราบได้ขณะที่พัฒนาโปรแกรม เช่น การหารด้วยศูนย์ การป้อนข้อมูลผิดประเภท หรือการเปิดไฟล์ที่ไม่มีอยู่จริง เป็นต้น ดังนั้นการตรวจสอบและดักจับข้อผิดพลาดดังกล่าวขณะที่โปรแกรมทำงานจึงเป็นสิ่งที่จำเป็น เพื่อให้โปรแกรมสามารถทำงานต่อไปได้
เป็นความผิดของโปรแกรมที่อาจเกิดจาก Syntax Error ซึ่งเป็นความผิดพลาดที่เกิดจากการที่เขียนโปรแกรมไม่ถูกหลักไวยากรณ์ในภาษานั้น สามารถตรวจสอบได้จากการที่โปรแกรมไม่สามารถคอมไพล์ได้ ซึ่งถือว่าง่ายต่อการตรวจสอบ หรืออาจเกิดจาก Logical Error ซึ่งเป็นความผิดพลาดที่ยากต่อการตรวจสอบ เนื่องจากเมื่อคอมไพล์โปรแกรมแล้ว ตัวภาษาไม่แจ้งความผิดพลาดออกมาให้เห็น จะเกิดได้จากความเข้าใจผิดพลาดของผู้เขียนโปรแกรม จึงทำให้ลักษณะผลลัพธ์ไม่ถูกต้อง เวลามีการคำนวณหรือประมวลผลนั่นเอง
การใช้งานคำสั่ง try…catch
การแก้ไขข้อผิดพลาดด้วย Exception
Statements คือ ชุดคำสั่งที่ต้องการดักจับข้อผิดพลาด
theException e คือ ประเภทของ Exception ที่ต้องการดักจับ
statements_n คือ ชุดคำสั่งที่จะทำงานเมื่อพบข้อผิดพลาดตาม Exception
MethodName คือ เป็นส่วนของการประกาศเมท็อด
finalStatements คือ ชุดคำสั่งที่จะทำงานเสมอไม่ว่าจะพบข้อผิดพลาดหรือไม่
ตัวอย่างโปรแกรมที่มีข้อผิดพลาด
เมื่อรันโปรแกรม ผลลัพธ์ที่ได้
การแก้ไขข้อผิดพลาดด้วย Exception
ตัวอย่างโปรแกรมแก้ไขข้อผิดพลาดที่เกิดจากการหารด้วยศูนย์ และการป้อนข้อมูลผิดประเภท
เมื่อรันโปรแกรมในกรณีที่ป้อนค่า NumberA : 5, NumberB : 0 จะได้ผล ดังนี้
เมื่อรันโปรแกรมในกรณีที่ป้อนค่า NumberA : 9, NumberB : A จะได้ผล ดังนี้
เมื่อรันโปรแกรมในกรณีที่ป้อนค่า NumberA : 8 , NumberB : 4 จะได้ผล ดังนี้
การใช้งานคำสั่ง throws
การแก้ไขข้อผิดพลาดด้วย Exception
Access modifier คือ ขอบเขตในการเข้าถึงของเมท็อด
return_type คือ ชนิดของข้อมูลที่เมท็อดจะทำการคืนค่ากลับ แต่ในกรณีที่ไม่มี
การคืนค่าให้กำหนดเป็น void
MethodName คือ ชื่อของเมท็อด
Parameter คือ ตัวแปรที่ใช้ในการรับข้อมูล
ExceptionType1
ExceptionType2 คือ ประเภทของข้อผิดพลาดที่ต้องการดักจับ
ExceptionTypen
Statements คือ ชุดคำสั่งกำหนดการทำงานของเมท็อด
varValue คือ ค่าที่ต้องการส่งกลับ แต่ในกรณีที่กำหนด return_type เป็น
void จะไม่มีการส่งค่ากลับ
คำสั่ง throws เป็นคำสั่งที่มีการเรียกใช้เมื่อเกิดข้อผิดพลาดขึ้นในคำสั่งใดคำสั่งหนึ่ง เมื่อเมท็อดต้องการที่จะส่งอ็อบเจกต์ประเภท Exception เพื่อสร้างอ็อบเจกต์ของคลาสประเภท Exception ขึ้นมาเพื่อให้เมท็อดแก้ไขข้อผิดพลาดของโปรแกรมที่เกิดขึ้น ซึ่งจะต้องมีคำสั่ง throws เพื่อให้เมท็อดสามารถแก้ไขข้อผิดพลาดได้
คำสั่ง throws เป็นคำสั่งที่ใช้วิธีการส่งข้อผิดพลาดออกไปจัดการด้วยอ็อบเจกต์ ซึ่งมีรูปแบบการทำงาน ดังนี้
การแก้ไขข้อผิดพลาดด้วย Exception
ตัวอย่างโปรแกรมแก้ไขข้อผิดพลาด โดยใช้ Exception ที่สร้างขึ้นเอง
เมื่อรันโปรแกรมในกรณีที่ป้อนคะแนนเป็น 80 จะได้ผล ดังนี้
เมื่อรันโปรแกรมในกรณีที่ป้อนคะแนนเป็น 500 จะได้ผล ดังนี้
เมื่อรันโปรแกรมในกรณีที่ป้อนคะแนนเป็น X จะได้ผล ดังนี้