Verilen kullanıcı girdisi geçersizse bir istisna ile karşılaşan bir kod yazdım, böylece bir try/catch bloğuna koydum ama yine de bir istisna attı . Kodun kendisi oldukça uzun olduğu için, istisnayla karşılaşan kodun basitleştirilmiş bir sürümü. Özel durumun kendisi açıktır, "3" pozisyonu o kadar doğal değildir ki, bir istisna atar, ama bir deneme/yakalama bloğunun içindedir, bu yüzden yakalanmalıdır, ama olmaz.Kod bir try/catch bloğu içinde olsa bile bir istisna almaya devam ediyorum
int main() {
try
{
vector<string> test = vector<string>{ "a","b","c" };
string value = test[3];
}
catch (...)
{
}
}
Bu kodun çalıştırılması, bir try/catch bloğunda bulunup bulunmadığına bakılmaksızın, aşağıdaki istisnayla sonuçlanır.
Ben de istisna (const out_of_range&e
) belirterek çalıştı ama bu da yardımcı olmadı. Sadece aynı istisna neden oldu. Visual Studio kullanıyorum
int main() {
try
{
vector<string> test = vector<string>{ "a","b","c" };
string value = test[3];
}
catch (const out_of_range&e)
{
}
}
, bu IDE veya kullandığı derleyici ile bir sorun olabilir?
Öğe 3, vektörünüzün bir üyesi değildir. Bunun yerine 2 kullanın. – Raindrop7
Farklı türde * istisnalar vardır * bilgisayar sistemleri. Yazılımın, işletim sisteminin veya donanım hatalarının neden olduğu değil, yalnızca C++ 'dan atılanları yakalayabilirsiniz. İhtiyaç duyduğunuz gibi bir çökme [programlarınızı nasıl debug edeceğinizi öğrenin] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). –
* Çöküşünüzün ardında yatan sebepler için * [yeni başlayanlar kitaplarına] geri dönmelisiniz (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) ve bunları gözden geçirin . –