Нет доступных источников броска

Я пытаюсь посмотреть на элемент по недопустимому индексу, чтобы проверить мою перехват ошибок, но я продолжаю получать 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

Если вы не сталкивались с этой ошибкой раньше и не знаете, как ее исправить, любая помощь будет принята с благодарностью! 🙂

1

Решение

No Source Available — это просто отладчик / IDE, сообщающий вам, что там, где было поймано исключение (или нет в вашем случае), у него нет исходного кода для отображения, чтобы показать вам, где находится его текущая строка выполнения.

В вашем примере вы не поймаете его, поэтому он будет в глубине автоматически сгенерированного кода (который вызывает main ()).

Поместите попытку / ловушку вокруг вызова At (5), и он захватит его там (при условии, что вы поставили точку останова).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]