Nói rằng tôi có:C++ - tìm loại một ngoại lệ mặc định bắt
try
{
externalLibrary::doSomething();
}
catch (std::exception &e)
{
//yay I know what to do
}
catch (...)
{
//darn, I've no idea what happened!
}
Có thể có trường hợp, bạn có được một ngoại lệ và bạn không biết nó ở đâu đến từ hoặc lý do tại sao - trong một số thư viện bên ngoài với không có thông tin gỡ lỗi. Có cách nào để tìm thấy những gì đã được ném, hoặc nếu không có được bất kỳ dữ liệu nào liên kết với nó? Họ thể được thực hiện:
throw myStupidCustomString("here is some really useful information");
Nhưng tôi chưa bao giờ biết nếu tôi bắt ...
Làm việc trong MSVC++ 2008 nếu vấn đề.
Xin chào, tôi nghĩ rằng đây là một câu trả lời tuyệt vời.Tuy nhiên, tôi không thể tìm thấy bất kỳ thông tin nào trong tiêu chuẩn về việc đây có phải là hành vi tiêu chuẩn hay không. Tôi đã thử nghiệm nó, và nó hoạt động cả trong VisualStudio, GCC, và LLVM, nhưng tôi không hoàn toàn chắc chắn lý do tại sao. Vì vậy, việc nhập một khối 'try {} catch() {}' mới không ảnh hưởng đến ngoại lệ hiện tại theo bất kỳ cách nào? Cảm ơn! – NHDaly
Tôi cho rằng tôi cũng không chắc tại sao nó không hoạt động .. Có vẻ hợp lý với tôi rằng việc tham gia vào khối thử sẽ không ảnh hưởng đến bất kỳ ngoại lệ nào, nhưng tôi đoán tôi chỉ muốn kiểm tra lại. – NHDaly