Tôi đã viết một số mã gặp phải ngoại lệ nếu đầu vào của người dùng được cung cấp không hợp lệ vì vậy tôi đặt nó trong khối try/catch, nhưng nó vẫn ném một ngoại lệ . Bản thân mã này khá dài nên đây là một phiên bản đơn giản của mã cũng gặp phải ngoại lệ. Ngoại lệ chính nó là rõ ràng, vị trí "3" không tồn tại như vậy tự nhiên nó sẽ ném một ngoại lệ, nhưng nó bên trong của một khối try/catch vì vậy nó sẽ bị bắt, nhưng nó không.Tôi tiếp tục nhận được ngoại lệ ngay cả khi mã nằm trong khối try/catch
int main() {
try
{
vector<string> test = vector<string>{ "a","b","c" };
string value = test[3];
}
catch (...)
{
}
}
Chạy mã này chỉ dẫn đến ngoại lệ sau bất kể có trong khối try/catch hay không.
Tôi cũng đã cố gắng xác định các ngoại lệ (const out_of_range&e
) nhưng điều đó không giúp được gì. Nó chỉ gây ra cùng một ngoại lệ chính xác.
int main() {
try
{
vector<string> test = vector<string>{ "a","b","c" };
string value = test[3];
}
catch (const out_of_range&e)
{
}
}
Tôi đang sử dụng Visual Studio, đây có phải là vấn đề với IDE hoặc trình biên dịch được sử dụng không?
Yếu tố 3 không phải là thành viên của vectơ của bạn. Sử dụng 2 để thay thế. – Raindrop7
Có nhiều loại * ngoại lệ * om hệ thống máy tính khác nhau. Bạn chỉ có thể bắt những người được ném từ C++ chính nó, không phải là những người được gây ra bởi phần mềm, hệ điều hành hoặc lỗi phần cứng. Một sự cố mà bạn cần phải [tìm hiểu cách gỡ lỗi chương trình của bạn] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). –
Vì lý do đằng sau sự cố * của bạn * bạn nên quay lại [sách người mới bắt đầu] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) và xem lại chúng . –