การจัดการกับ error (Error Exception Handing) ใน PL/SQL

การจัดการเรื่องการดักจับ error หรือที่เรียกว่า error management ในภาษา PL/SQL โปรแกรมเมอร์หรือนักพัฒนาสามารถออกแบบให้ฟ้องออกมาเป็นข้อความก็ได้ หรือจะให้ insert เข้า table ก็ได้ แต่ที่ที่สำคัญเมื่อเกิดการ error ใน statement ของ sql ท่านต้องมีการเขียนคำสั่ง rollback เพื่อเป็นการคืนทรัพยากรให้กับ server เพื่อไม่ให้เกิดการค้างของ resource ได้

เช่นการเขียนโค้ด statement เมื่อทำเสร็จสมบูรณ์ให้มีการยืนยันด้วยคำว่า commit แต่หาก error ให้ช้ำว่า rollback ออกมา แล้วผู้เทสต์หรือผู้ตรวจสอบก็เขียน error management จัดการอีกที ที่เราเรียกศัพท์ว่า Exception Handing 

เรามาดู error ใน sql แบบง่ายที่นักพัฒนาควรจะรู้จักกันเช่น ORA-00001 DUP_VAL_ON_INDEX จะแปลว่ามี key ซ้ำนั่นเอง คีย์ซ้ำหมายถึงว่า ท่านจะ insert data เข้าไปใน table ที่มี primary key แต่ว่า data นั้นเกิดมีข้อมูลใน table อยู่แล้ว สิ่งนี้เราจะเรียกว่า primary key ซ้ำ

หรือ ORA-00060 deadlock detected while waiting for resource ที่เมื่อโปรแกรมตรวจสอบพบ error แบบนี้หมายความว่าเกิดการแย่งใช้ทรัพยากร (data ใน row นี้แล้ว) ซึ่งการจัดการกับ error นี้ท่านต้องเขียนว่า rollback และอาจจะมีการแสดง error โดยการใช้คำว่า dbms_output.put_line หรือ การ insert ลง table เฉพาะเช่น table ชื่อว่า error_log ก็แล้วแต่

และ PL/SQL เป็นภาษาที่มีการจัดการเป็นระบบมีการสร้าง block หากประกาศว่า declare …begin … end โดยปกติเราจะเรียกว่า anonymous block ซึ่งมันจะมีวิธีการจัดการ block ตามลำดับขั้น 

สมมติว่าเขียนโปรแกรมดังนี้

declare 

<<inner block>>

Begin

  <<point1>>

Exception

  <<point2>>

end

  exception

<<point3>>

End;

เมื่อโปรแกรมเกิดการ error ใน inner block มัน ก็คือเกิด error ที่ <<point2>> ตัวจัดการจะกระโดดข้ามมายัง main exception <<point3>> ต่อทันที ท่านสามารถเขียนโปรแกรมเพื่อแสดงการทำงานโดยใช้คำว่า dbms_output.put_line เพื่อดูลักษณะการรันของโปรแกรมว่าเป็นอย่างไร

การเขียนดัก error exception handing เพื่อจัดการกับโค้ดที่ error มีความสำคัญมาก ซึ่งในฐานะนักพัฒนาหากว่าท่านเขียนโปรแกรมขึ้นมาแล้วไม่ได้เป็นคนดูแล โค้ดของท่านเอง จงเขียนโปรแกรมเพื่อดักจับ error ไว้เถิด 

ซึ่ง error ในที่นี่ไม่ได้เป็น error จากการเขียนโปรแกรม แต่เป็น error ตั้งแต่ข้อมูลต้นทาง บางครั้งเราต้องมีวิธีตรวจสอบ error ดังกล่าวเพื่อที่จะแก้ไขมันได้อย่างถูกจุด 

และอีกประการหนึ่งเรื่องของ comment ก็เป็นเรื่องที่สำคัญเช่นเดียวกันในกรณีที่ชุดคำสั่งถูกพัฒนาโดย developer หลายท่าน ควรที่จะระบุ ชื่อ developer วันที่ในการเปลี่ยนแปลงแก้ไขไว้ด้วยก็จะดี เพราะว่าจะได้ทราบว่าเวอร์ชันของการพัฒนานั้น โค้ดตัวไหนที่อัพเดตกว่ากัน และแก้ไปเพื่อวัตถุประสงค์อะไร

และข้อคิดสุดท้ายการเขียนโปรแกรม บางครั้งอย่าไปคิดว่าเป็นการพิมพ์แบบสิ้นเปลืองบรรทัดเพราะว่าสิ่งไหนที่เป็นการช่วยให้การพัฒนางานของเราเร็วขึ้น หรือดักจับ error ได้ดีขึ้นก็ควรจะทำ

 

สนับสนุนโดย  วิธีเล่นบาคาร่าให้รวย