Try-Catch-Finally Block
try block
เป็น block ที่ใช้วางขอบเขตของการตรวจจับ code ที่น่าจะเกิด exception ซึ่งประกาศใช้ได้ใน method เท่านั้น
catch block
เป็น block ที่ใช้ในการระบุประเภทของ exception ที่จะตรวจจับ และ ดำเนินงานจัดการ exception เมื่อตรวจจับ exception ที่ตรงกับประเภทที่ระบุไว้ ซึ่งการประกาศจะประกาศใช้หลัง try block เท่านั้น
try block กำหนดขอบเขตของการตรวจจับ exception
catch block ระบุประเภท exception ที่ต้องการตรวจจับและจัดการ exception
เมื่อเกิด exception ใน try block จะโยนให้ catch block จัดการ
ดังนั้น try block และ catch block จะทำงานเสริมกัน
หลังจากจัดการกับ exception เสร็จโปรแกรมก็จะดำเนินการต่อไปจนจบ ไม่ยุติการทำงานกลางคัน
Syntax try block และ catch block
try{
// การทำงานต่างๆของโปรแกรม
}catch( (ระบุTypeException) (ชื่อparameter) ){
//การทำงานเมื่อเกิด exception
}
ตัวอย่าง Code ที่ปราศจากการจัดการ exception
จาก ตัวอย่างข้างบน โปรแกรมหยุดการทำงานหลังแจ้งเกิด exception
ตัวอย่าง code ที่จัดการ exception
จากตัวอย่างข้างบน โปรแกรมสามารถดำเนินงานต่อไปได้หลัง exception ถูกจัดการ
ผังการทำงานประกอบความเข้าใจของ code
จากรูป JVM จะ check ว่า exception มีการจัดการหรือไม่ ถ้าไม่ JVM จะจัดการตาม default exception handle นั่นคือ print บอกรายละเลียดของ exception ที่เกิด print บอกว่าเกิด exception ที่บรรทัดไหน และ ยุติโปรแกรม แต่ถ้ามีการจัดการ exception การทำงานจะทำต่อจนจบไม่ยุติกลางคัน
ถ้าคุณต้องการจะดักจับ exception หลายกรณีในทีเดียวก็สามารถทำได้เช่นกัน โดยใช้ multiple catch
ตัวอย่าง code
ตัวอย่าง code
จาก code ข้างบน เมื่อมี exception เกิดขึ้นในเขต try จะถูกส่งไปตรวจจับที่ catch อันแรกก่อน หากไม่ตรงกับประเภทที่ระบุในการตรวจจับ จะส่งไปตรวจจับที่ catch อันต่อไปเรื่อยๆ
ข้อควรระวังการใช้ multiple catch : subclass ของ exception ต้องระบุตรวจจับก่อน superclass ของมันเสมอ ไม่งั้น compile error
ในบางสถานณ์การคุณอาจมีความจำเป็นต้องการตรวจจับ exception ใน try block ก็สามารถใช้ Nested try block ได้
ข้อควรระวังการใช้ multiple catch : subclass ของ exception ต้องระบุตรวจจับก่อน superclass ของมันเสมอ ไม่งั้น compile error
ในบางสถานณ์การคุณอาจมีความจำเป็นต้องการตรวจจับ exception ใน try block ก็สามารถใช้ Nested try block ได้
finally block
เป็น block ที่ใช้ดำเนินการ code ที่สำคัญซึ่งจะขาดไม่ได้ก่อนที่จะสิ้นสุดโปรแกรม เช่น การปิด connection,stream,etc. เป็นต้น code ภายใน block นี้จะทำงานเสมอไม่สนว่าจะเกิด exception หรือไม่ หากเกิดก็ไม่สนว่าจะมีการจัดการ exception หรือไม่
ตัวอย่าง code เมื่อมีการจัดการ exception
ไม่มีความคิดเห็น:
แสดงความคิดเห็น