ฉันเคยเห็นคนพูดว่ามันเป็นรูปแบบที่ไม่ดีที่จะใช้ catch โดยไม่มีข้อโต้แย้งโดยเฉพาะถ้า catch นั้นไม่ได้ทำอะไร:
StreamReader reader=new StreamReader("myfile.txt");
try
{
int i = 5 / 0;
}
catch // No args, so it will catch any exception
{}
reader.Close();
อย่างไรก็ตามนี่ถือว่าเป็นรูปแบบที่ดี:
StreamReader reader=new StreamReader("myfile.txt");
try
{
int i = 5 / 0;
}
finally // Will execute despite any exception
{
reader.Close();
}
เท่าที่ฉันสามารถบอกได้ความแตกต่างเพียงอย่างเดียวระหว่างการวางโค้ดการล้างข้อมูลในบล็อกสุดท้ายและการวางโค้ดการล้างข้อมูลหลังจากบล็อก try..catch คือถ้าคุณมีคำสั่งคืนในบล็อกลองของคุณ (ในกรณีนั้นรหัสการล้างข้อมูลในที่สุดจะ เรียกใช้ แต่รหัสหลังจาก try..catch จะไม่)
มิฉะนั้นจะมีอะไรพิเศษเกี่ยวกับในที่สุด?