Xử lý ngoại lệ trong C ++ bị giới hạn ở thử / ném / bắt. Không giống như Object Pascal, Java, C # và Python, ngay cả trong C ++ 11, finally
cấu trúc đã không được thực hiện.
Tôi đã thấy rất nhiều tài liệu C ++ bàn về "mã an toàn ngoại lệ". Lippman viết rằng mã an toàn ngoại lệ là một chủ đề quan trọng nhưng tiên tiến, khó, vượt ra ngoài phạm vi của Primer của anh ta - điều này dường như ngụ ý rằng mã an toàn không phải là nền tảng của C ++. Herb Sutter dành 10 chương cho chủ đề trong C ++ đặc biệt của mình!
Tuy nhiên, dường như nhiều vấn đề gặp phải khi cố gắng viết "mã an toàn ngoại lệ" có thể được giải quyết khá tốt nếu finally
cấu trúc được triển khai, cho phép lập trình viên đảm bảo rằng ngay cả trong trường hợp ngoại lệ, chương trình có thể được khôi phục đến trạng thái an toàn, ổn định, không rò rỉ, gần với điểm phân bổ tài nguyên và mã có khả năng có vấn đề. Là một lập trình viên Delphi và C # rất có kinh nghiệm, tôi sử dụng thử .. cuối cùng cũng chặn khá nhiều mã của tôi, cũng như hầu hết các lập trình viên trong các ngôn ngữ này.
Xem xét tất cả các 'chuông và còi' được triển khai trong C ++ 11, tôi đã rất ngạc nhiên khi thấy rằng 'cuối cùng' vẫn không có ở đó.
Vậy, tại sao finally
cấu trúc chưa bao giờ được thực hiện trong C ++? Đây thực sự không phải là một khái niệm quá khó hoặc tiên tiến để nắm bắt và đi một chặng đường dài hướng tới việc giúp lập trình viên viết 'mã an toàn ngoại lệ'.
finally
trong C ++ và những kỹ thuật xử lý ngoại lệ nào được sử dụng ở vị trí của nó?" là hợp lệ và về chủ đề cho trang web này. Các câu trả lời hiện có bao gồm điều này tốt, tôi nghĩ. Biến nó thành một cuộc thảo luận về "Những lý do của các nhà thiết kế C ++ không bao gồm finally
giá trị?" và "Có nên finally
thêm vào C ++ không?" và tiếp tục thảo luận về các bình luận về câu hỏi và mọi câu trả lời không phù hợp với mô hình của trang web Hỏi & Đáp này.