Exceptions

C++ exceptions

Exceptions เป็นวิธีที่จะจัดการกับโปรแกรมเพื่อให้ไปทำอย่างอื่นเมื่อมีข้อผิดพลาดเกิดขึ้น โปรแกรมจะพยายามทำบางอย่างที่เราได้ระบุไว้ ถ้ามีข้อผิดพลาดเกิดขึ้น โปรแกรมจะย้ายไปทำงานอีกส่วนของโปรแกรมที่เรียกว่าฟังก์ชันตัวจัดการ Exceptions มีรูปแบบดังนี้:

try
{
// statetments
}
catch (exceoption e1) {
// exception handler 1
}
catch (exceoption e2) {
// exception handler 2
}
...

ถ้าเราไม่ใช้ exception ในโปรแกรมของเรา มันอาจจะเผชิญกับข้อผิดพลาด เช่น running time errors หรือ memory allocation errors มี 3 คำสั่งเกี่ยวกับ exception คือ thrown, try และ catch

#include <iostream>
using namespace std;

int main ()
{
int n = 0;
try {
if (n == 0)
throw n;
else
cout << "n is not zero." << endl;
} catch (int e) {
cout << "An exception occurred: n = " << e << endl;
}
return 0;
}

ในตัวอย่าง โปรแกรมนั้นมีการจัดการกับข้อผิดพลาด ในบล็อคคำสั่งของ try โปรแกรมของเราจะตรวจสอบว่า n เป็น 0 เราจะใช้คำสั่ง throw ซึ่งมี n อากิวเมนต์ที่จะส่งต่อไปยังบล็อคคำสั่งของ catch (handlers function) ประเภทของพารามิเตอร์จะต้องตรงกัน ในตัวอย่างนี้ เราได้ส่ง n ซึ่งเป็นข้อมูบแบบ int ฟังก์ชัน catch จะต้องมีพารามิเตอร์เป็นแบบ int e ด้วยเช่นกัน

ฟังก์ชัน catch สามารถเป็นฟังก์ชันแบบ overloaded ได้โดยการที่มันมีประเภทของพารามิเตอร์ที่แตกต่างกัน คอมไพลเลอร์จะทำการตัดสินใจว่าจะส่งไปที่ฟังก์ชันไหนเมื่อโปรแกรมทำงาน Overloaded handlers ได้สร้างขึ้นในรูปแบบเหมือนข้างบน นี่เป็นตัวอย่าง

try
{ throw 10.0;
}
catch (int e1)
{
// catch integer exception
}
catch (float e2)
{
// catch floating point exception
}catch (string e2)
{
// catch string exception
}
...

Standard exceptions

ในภาษา C++ มีไลบรารี่ของ exceptions มาตรฐานสำหรับการใช้งาน ซึ่งมันจะตัดสินใจอัตโนมัติเมื่อเกิดข้อผิดพลาดขึ้น และจะไปยังส่วนของโปรแกรมที่มีฟังก์ชัน catch ที่เหมาะสม ไลบรารี่สามารถใช้ได้โดยการ include std standard <exception> มายังโปรแกรม

ไลบรารี่มาตรฐานของ exceptions ในภาษา C++ แสดงดังรายการข้างล่าง:

exceptiondescription
bad_allocthrown by new on allocation failure
bad_castthrown by dynamic_cast when it fails in a dynamic cast
bad_exceptionthrown by certain dynamic exception specifiers
bad_typeidthrown by typeid
bad_function_callthrown by empty function objects
bad_weak_ptrthrown by shared_ptr when passed a bad weak_ptr
logic_errorerror related to the internal logic of the program
runtime_errorerror detected during runtime

บทความเกี่ยวกับ Exceptions

Exception ในภาษา C#

ในบทนี้ คุณจะได้เรียนและทำความรู้จักกับ Exception ในภาษา C# รวมถึงการใช้งาน Exception จากไลบรารี่ที่ภาษา C# มีให้ และการจัดการและสร้าง Exception แบบกำหนดเอง Exc...

Exception ในภาษา Java

ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับ exception ในภาษา Java มันเป็นวิธีการจัดการข้อผิดพลาดที่เกิดขึ้นในขณะที่โปรแกรมทำงาน Exception คือการที่โปรแกรมพยายามจะทำงานบาง...

Exception ในภาษา Visual Basic

Exception คือคุณสมบัติในภาษา Visual Basic ที่ให้คุณสามารถจัดการกับข้อผิดพลาดที่ไม่คาดฝันที่อาจจะเกิดขึ้นในขณะที่โปรแกรมกำลังทำงาน โดยการทำงานของ Exception นั้นจ...