Я пытаюсь посмотреть на элемент по недопустимому индексу, чтобы проверить мою перехват ошибок, но я продолжаю получать No Source Available, когда пытаюсь его отладить, или Unhanded Exception Error, когда я пытаюсь запустить его нормально:
#include <iostream>
#include "MyArray.h"
using namespace std;
int main()
{
MyArray<int> arr1;
MyArray<int> arr2(2);
arr2.Add(11);
arr2.Add(22);
arr2.Add(33);
arr2.At(5); // Test to check error
system("pause");
return 0;
}
arr2.At(5);
вызывает эту функцию в моем файле MyArray.h, где я получаю свою ошибку:
// MyArray.h
template <class elemType>
elemType & MyArray<elemType>::At(int index)
{
if (index < 0 || index >= _size)
throw "elemType & MyArray<elemType>::At(int index) Index out of range!"; // Where the problem is
return list[index];
}
Ошибка, которую я получаю при нормальном запуске:
Unhandled exception at 0x763ec41f in MyArrayProject.exe: Microsoft C++ exception: char at memory location 0x0032fa60..
Ошибка, которую я получаю при попытке отладки в arr2.At(5);
и это бьет throw "elemType & MyArray<elemType>::At(int index) Index out of range!";
:
No Source Available
There is no source code available for the current location.
Call stack location:
msvrc100d.dll!_CxxThrowException(void * pExceptionObject, const_s__ThrowInfo) Line 91
Если вы не сталкивались с этой ошибкой раньше и не знаете, как ее исправить, любая помощь будет принята с благодарностью! 🙂
No Source Available — это просто отладчик / IDE, сообщающий вам, что там, где было поймано исключение (или нет в вашем случае), у него нет исходного кода для отображения, чтобы показать вам, где находится его текущая строка выполнения.
В вашем примере вы не поймаете его, поэтому он будет в глубине автоматически сгенерированного кода (который вызывает main ()).
Поместите попытку / ловушку вокруг вызова At (5), и он захватит его там (при условии, что вы поставили точку останова).
Других решений пока нет …