Tôi biết chỉ những điều cơ bản của C xử lý ngoại lệ ++ nhưng như xa như tôi có thể nhìn thấy, Java có excplicit Object
thứ bậc dựa trên cho trường hợp ngoại lệ (Throwable
, Exception
, RuntimeException
, Error
) trong khi trong C++ bạn có thể làm
try
{
throw 1337;
}
catch (int i)
{
// i == 1337
}
Điều này tất nhiên phản ánh thiết kế cấu trúc lớp học của bạn và các chính sách xử lý ngoại lệ chung, v.v.
Sự khác biệt được giới thiệu bởi sự khác biệt này dường như chỉ có C++ trong thế giới Java, có nghĩa là bạn có thể ném bất cứ thứ gì vào bất kỳ lúc nào mà không cần viết mã để xử lý ngoại lệ giả ném (Tôi không sẵn sàng gọi int
hoặc bất kỳ kiểu nguyên thủy nào khác ngoại lệ, chúng chỉ có thể là ngoại lệ giá trị).
Cuối cùng, do tính chất của chúng khi so sánh với ngoại lệ của Java, ngoại lệ C++ không theo mặc định chứa bất kỳ thứ gì có thể so sánh với chồng xếp của Java.
C++ - vào nền tảng và trình biên dịch? – kennytm
Tôi nhận ra chỉ sau khi trả lời, bạn có ý nghĩa bằng cách thực hiện các chi tiết mức thấp như cách Java xây dựng stacktraces và theo dõi đường dẫn của sự thất bại hay cái gì đó cao cấp hơn mà câu trả lời của tôi là nhằm trả lời? – Esko
Làm cách nào để xử lý ngoại lệ C++ có thể chậm hơn JavaScript? Với trình duyệt nào, trên nền tảng nào, chạy mã nào, so với trình biên dịch nào, trên nền tảng nào, biên dịch mã nào? – Puppy