没有来源可用投掷

时间:2012-11-14 03:19:33

标签: c++ unhandled-exception throw

我正在尝试查看无效索引处的元素来测试我的错误捕获,当我尝试正常运行时,我一直在尝试调试它时出现No Source Available或者我尝试正常运行时出现Unhanded Exception Error:< / p>

#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 个答案:

答案 0 :(得分:1)

No Source Available只是调试器/ IDE告诉您异常被捕获的位置(或者不是在您的情况下),它没有显示源代码以显示其当前执行的位置。

在您的示例中,您没有捕获它,因此它将位于自动生成的代码的深处(调用main())。

在At(5)调用周围放一个try / catch,它会抓住它(假设你在那里设置了一个断点)。