Exception คือข้อผิดพลาดที่อาจเกิดขึ้นขณะรันโปรแกรม แบ่งชนิดได้ดังนี้
• User input errors เป็นข้อผิดพลาดที่เกิดจากผู้ใช้เอง เช่น การใส่ชื่ อ URL ผิด, หา URL นั้นไม่พบเป็นต้น
• Device errors ความผิดพลาดที่เกิ ดจากอุปกรณ์ฮาร์ดแวร์ เช่น ปริ้ นเตอร์กระดาษหมด, ปริ้นเตอร์ปิด,กําหนด serial ผิดทําให้หา port ไม่เจอ
• Physical Limitations ความผิดพลาดอันเกิดจากหน่วยความจํา เช่น ดิสก์เต็ม, พื้นที่หน่วยความจําเต็ม
• Code errors ข้อผิดพลาดที่เกิดจากโปรแกรมเมอร์ เช่น ทำการใช้อะเรย์เกิ นขนาดที่กําหนด หรือการหารที่มีตัวหารเป็นศูนย์ เป็นต้น
แบ่งเป็น 2 ประเภทคือ
- Error คือข้อผิดพลาดไม่สามารถแก้ไขได้ เช่น VirtualMachineError และ ThreadDeath เป็นต้น จะไม่กล่าวถึง เนื่องจากเป็นข้อผิดพลาดที่ไม่สามารถเขียนโปรแกรมเพื่อแก้ไขหรือจัดการได้
- Exception เป็นข้อผิดพลาดที่สามารถแก้ไขได้ ซึ่งจะกล่าวถึงสิ่ งที่มักจะเจออยู่บ่อย แบ่งเป็น2ประเภท คือ
1. IOException เป็นข้อผิดพลาดที่เกิดจากผู้ใชไม่สามารถแก้ไขโดยการปรับปรุงตัวโปรแกรมได้ เช่น การใส่ชื่อไฟล์ผิด ทำให้เกิดข้อผิดพลาด ชนิด FileNotFoundException เป็นต้น
2. RuntimeException เป็นข้อผิดพลาดที่สามารถหลีกเลี่ยงได้ โดยทำการเขียนโปรแกรมตรวจสอบให้ถูกต้อง เช่น หากประกาศขนาดอะเรย์ โดยมีสามาชิกจำนวน5ตัว แต่มีการอ้างอิงสมาชิกตัวที่6 ทำให้เกิดข้อผิดพลาดชนิดArrayIndexOutOfBoundsException การแก้ไขคือ เขียนโปรแกรมตรวจสอบการอ้างอิงจำนวนสมาชิก ไม่ให้เกินขนาดที่ประกาศใช้งาน คลาสแม่ของข้อผิดพลาด คือ คลาสThrowable หรือเรียกอีกอย่างว่า คลาสราก (Root Class)ไดอะแกรมแสดงคลาสของข้อผิดพลาดต่างๆ ซึ่งมักพบบ่อยๆที่สืบทอดจากคลาส Throwable
Exception ที่สําคัญและพบบ่อยในการเขียนโปรแกรมภาษาจาวา มีดังนี้
1.NullPointerException เป็นข้อผิดพลาดที่เกิดจากการเรียกใช้ออบเจกต์ที่ยังไม่ได้ถูกสร้าง (ออบเจกต์มีค่าเป็น null)2.ArithmeticException เเป็นข้อผิดพลาดที่เกิดจากการหารจำนวนเต็มด้วย
3.ArrayIndexOutOfBoundsException เป็นข้อผิดพลาดที่เกิดจากการอ้างอิงสมาชิกในอะเรย์ไม่ถูกต้อง (น้อยกว่า0 หรือเกินกว่าสมาชิกของอะเรย์ที่มีอยู่)
4.NumberFormatException เป็นข้อผิดพลาดที่เกิดจากรูปแบบตัวเลขที่ใช้ไม่ถูกต้อง
5.FileNotFoundException เป็นการระบุว่าไม่พบไฟล์ที่ต้องการ
6.EOFException เป็นการระบุตำแหน่งสิ้นสุดของไฟล์ผ่านมาแล้ว7.IOException เป็นข้อผิดพลาดที่เกิดจากการรับและส่งข้อมูล
ยกตัวอย่างคําสั่งที่สามารถทําให้เกิดข้อผิดพลาดได้ ดังนี้
ThrowableException
ErrorRuntimeException
IOException
NullPointerException
ArithmeticException
IndexOutOfBoundsException
VirtualMachineErrorEOFException
FileNotFoundException
ThreadDeath
การจัดการกับข้อผิดพลาดที่เกิดขึ้น (Exception Handling) ในภาษาจาวามีชุดคำสั่งในการจัดการข้อผิดพลาด
• try-catch
• throw
• throwstry-catch
• บล็อก try คือการจัดการกลุ่มคําสั่งที่อาจเกิดข้อผิดพลาด จะทําการสร้างออบเจกต์ Exception เพื่อสร้างไปจัดการต่อไป
• บล็อก catch คือคําสั่งภายในบล็อกจะทําการจัดการกับข้อผิดพลาดที่เกิดขึ้น โดยจะต้องระบุชนิดออบเจกต์ของคลาส Exception ที่ต้องการจัดการรูปแบบ
try {
[statements]
} catch (ExceptionType parameterExceptionName) {
[statement]
}
โดยที่
o [statements] ที่อยู่ในบล็อก try คือประโยคคําสั่งที่อาจเกิดข้อผิดพลาด
o ExceptionType คือคลาสประเภท Exception ที่ต้องจัดการเมื่อมีข้อผิดพลาดเกิดขึ้น
o parameterExceptionName คือชื่ อออบเจกต์ที่เป็นพารามิเตอร์ที่ใช้จัดการข้อผิดพลาดในบล็อก catch
o [statements] ที่อยู่ในบล็อก catch คือประโยคคําสั่งที่จัดการกับข้อผิดพลาดของออบเจกต์ชื่อparameterExceptionName
เมธอดของคลาส Exception ที่ใช้บ่อยในการจัดการข้อผิดพลาด :
• String getMessage()o ส่งค่า String กลับ แสดงข้อความที่เกิดข้อผิดพลาด
• void printStackTrace()o แสดงเมธอดต่างๆก่อนเกิดข้อผิดพลาด คล้ายกับการ Debug
• String toString()o แปลงออบเจกต์ Exception เป็น String แสดงชื่อคลาส และข้อความที่เกิดข้อผิดพลาดจากโปรแกรม ExceptionExample.java ข้างต้น ซึ่งเกิดข้อผิดพลาดจากการหารด้วยศูนย์ แสดงการเรียกใช้ งานเมธอดของคลาส Exception
21 กันยายน, 2550
สมัครสมาชิก:
บทความ (Atom)