Exceptions....

โปรแกรมภาษาจาวาแบ่งข้อผิดพลาดที่อาจเกิดขึ้นขณะรันโปรแกรมเป็นสอง ประเภทคือ
• Error เป็นข้อผิดพลาดที่ไม่สามารถแก้ไขและจัดการได้ เช่น
VirtualMachineError,OutOfMemoryError
• Exception เป็นข้อผิดพลาดที่สามารถแก้ไขหรือจัดการได้ เช่น
ArrayIndexOutOfBoundsException,FileNotFoundException
โดยในที่นี้จะกล่าวเฉพาะข้อผิดพลาดประเภท Exception เท่านั้น
Exceptions
Exception เป็น object อย่างหนึ่งที่ตัวแปลภาษาสร้างขึ้นเมื่อมีข้อผิดพลาดเกิดขึ้นกับโปรแกรมเพื่อใช้ตรวจสอบสภาวะที่ผิดปกติของโปรแกรม
หรือการทำงานที่ไม่ถูกต้องของโปรแกรม โดย Exception จะถูกส่ง (Throw) ออกมาจากโปรแกรมที่มีความผิดปกติเกิดขึ้นซึ่งสามารถนำ Exception
ดังกล่าวไปตรวจสอบเพื่อควบคุมให้โปรแกรมสามารถทำงานต่อไปได้อย่างปกติ
Error หรือข้อผิดพลาดของโปรแกรมจะต่างจาก Exception คือ Error เป็นข้อผิดพลาดที่ส่วนใหญ่ไม่สามารถตรวจพบได้ เพราะ Error มักจะทำให้
โปรแกรมหยุดการทำงานทันที เช่น Disk เสีย หน่วยความจำทับกัน (Stack Overflow) เป็นต้น
ประโยชน์ของการตรวจสอบข้อผิดพลาดก็คือ จะไม่ทำให้โปรแกรมหยุดการทำงานเมื่อเกิดสิ่งผิดปกติขึ้น เพราะสามารถตวรจสอบข้อผิดพลาดได้
จึง สามารถสั่งให้โปรแกรมทำงานต่อไปได้ทันที เช่น กรณีที่นำตัวเลข 2 จำนวนมาหารกันแต่ตัวหารมีค่าเท่ากับ 0 เราก็สามารถตรวจสอบได้ว่าเกิดข้อผิดพลาด
ทางการคำนวณเกิดขึ้นอาจจะสั่งให้โปรแกรมกำหนดค่าของตัวหารใหม่ก็ได้ เป็นต้น
ประเภทของ Exception 
Exception แบ่งออกเป็นสองประเภท คือ
• RuntimeException
• IOException
RuntimeException เป็นข้อผิดพลาดที่อาจหลีกเลี่ยงได้หากมีการเขียนโปรแกรมที่ถูกต้อง
IOException เป็นข้อผิดพลาดที่ภาษาจาวากำหนดให้ต้องมีการจัดการ หากมีการเรียกใช้เมธอดที่อาจเกิดข้อผิดพลาดประเภทนี้ได้
คลาสที่เกี่ยวข้องกับข้อผิดพลาด

ตัวอย่างโปรแกรมที่อาจเกิดข้อผิดพลาด

การสร้าง Exception ขึ้นมาใช้เอง 
เราสามารถสร้าง Exception ชึ้นมาใช้เองได้โดยการสืบทอด (Inherit) มาจาก Class “Exception” แต่มีข้อกำหนดว่าการใช้ Exception
ที่สร้างขึ้นมาเองนั้นจะต้องส่ง Exception ที่สร้างขึ้นมาเองด้วยคำสั่ง “throw” เพราะตัวแปรภาษา Java ไม่รู้จัก Exception ที่สร้างขึ้นมาเอง
ดังนั้นจึงต้องใช้คำสั่ง “throw” และ Keyword “throws” คู่กันเสมอ
ตัวอย่าง แสดงการสร้าง Exception ขึ้นมาใช้เอง
คำอธิบาย 
1. จากตัวอย่างมีการสร้าง Exception ขึ้นมาใช้งานเอง โดยการสร้าง Class “UserException” ซึ่งขยายมาจาก “Exception” เมื่อต้องการส่ง
Exception ออกไปก็ส่ง object ของ Class “UserException” ออกไปแทน Exception ทั่วๆ ไปที่มีอยู่ในตัวแปรภาษา Java
2. ใน Class “ExUserException1” บรรทัดที่ (10)-(15) ภายใน Method “run()” มีการตรวจสอบค่า Parameter ที่รับเข้ามา โดยหากค่าน้อยกว่า 0
ก็ให้ส่ง Exception ออกไป ในที่นี้จะส่ง “UserException” ซึ่งเป็น Exception ที่สร้างขึ้นมาเองออกไปด้วยคำสั่งในบรรทัดที่ (12) แต่ถ้าค่าที่
รับเข้ามามีค่าไม่น้อยกว่า 0 ก็จะแสดงค่านั้นออกทางจอภาพ ข้อสังเกตคือหลัง Method “run()” จะต้องระบุ Exception ที่จะส่งออกมาด้วยในที่นี้
คือ “UserException”
3. จากตัวอย่างจะเห็นว่าผลลัพธ์จากการเรียกใช้ Method “getMessage()” ในบรรทัดที่ (6) มีค่าเป็น “null” เนื่องจากยังไม่ได้กำหนดข้อความให้กับ
Exception ที่สร้างขึ้นใหม่นั่นเอง
