ภาพรวม
คีย์เวิร์ด finally ใช้สร้างบล็อกโค้ดที่จะทำงาน เสมอ ไม่ว่าจะมีข้อยกเว้นเกิดขึ้นหรือไม่ กรณีทั่วไปคือการปิดไฟล์ ปล่อยทรัพยากร หรือทำความสะอาด
ไวยากรณ์
try {
// โค้ดที่อาจโยนข้อยกเว้น
}
catch (ExceptionName e1) {
// จัดการข้อยกเว้นชนิดที่ 1
}
catch (ExceptionName e2) {
// จัดการข้อยกเว้นชนิดที่ 2
}
finally {
// โค้ดที่จะทำงานเสมอ
}
ตัวอย่าง: การหารด้วยศูนย์
using System;
public class Demo {
int result;
Demo() {
result = 0;
}
public void division(int num1, int num2) {
try {
result = num1 / num2;
}
catch (DivideByZeroException e) {
Console.WriteLine("Exception caught = {0}", e);
}
finally {
Console.WriteLine("Result = {0}", result);
}
}
public static void Main(string[] args) {
Demo d = new Demo();
d.division(100, 0);
}
}
ผลลัพธ์
Exception caught = System.DivideByZeroException: Attempted to divide by zero. at Demo.division(Int32 num1, Int32 num2) in d:\Windows\Temp\n0kebv45.0.cs:line 11 Result = 0
สรุป
- บล็อก
finallyทำงานหลังtryและcatch(ถ้ามี) - เหมาะสำหรับการทำความสะอาดทรัพยากร เช่น ปิดไฟล์ ปิดการเชื่อมต่อฐานข้อมูล
- แม้จะมี
returnในtryหรือcatchก็ยังทำงาน