Trong mã sau, tại lần lặp đầu tiên tôi nhận được ngoại lệ và tại bước thứ hai, tôi nhận được lỗi phân đoạn không có thông báo lỗi được in. Có vẻ như ngoại lệ không bị bắt:Tôi nhận được lỗi phân đoạn thay vì một ngoại lệ
int i = 0;
while(i++ < 10)
{
try {
cout << "Iteration: " << i << endl;
// Code...
cout << "OK" << endl;
}
catch(...)
{
cerr << "Error message" << endl;
continue;
}
}
Output:
Iteration 1
Error message
Iteration 2
Segmentation fault
Có bình thường hay có điều gì đó thực sự sai xảy ra?
Trong trường hợp cần liên quan, trong khối mã đó tôi đặt lại kết nối MySQL và ngoại lệ được tạo khi tôi kiểm tra xem kết nối có được đóng hay không.
Cảm ơn.
Hệ điều hành:
Linux - OpenSuse 11.4
C++ - GCC 4.5.1
Intel Xeon
lỗi Segmentation đang có. không bị bắt bởi 'try-catch'. Bạn nên sử dụng một trình gỡ lỗi để nắm bắt điều đó. –
Tôi khá chắc chắn rằng nó phải nằm trong' // Code ... '. Không thể phát hiện các điểm segfault trong những gì bạn đã đăng. .. – kratenko
Tôi quản lý để sao chép đầu ra của bạn bằng cách viết 'if (i == 1) throw 0; else i = * (int *) 0;' nhưng đó không phải là '// Code' của bạn, phải không? –