범위 초과 예외를 throw하는 std::vector
에 대한 참조 또는 적어도 예외가 발생한 행 번호 (Java의 스택 추적과 유사)에 액세스하고자합니다. 다음은 예제 프로그램입니다.어떤 벡터가 범위를 벗어난 인덱스 예외를 던졌습니까?
#include <iostream>
#include <vector>
std::vector<int> vec1;
std::vector<int> vec2;
vec1.push_back(1);
vec2.push_back(2);
try
{
std::cout << vec1.at(1) << std::endl;
std::cout << vec2.at(1) << std::endl;
}
catch(Exception e)
{
// e.lineNumber()? e.creator_object()?
std::cout << "The following vector is out of range: " << ? << std::endl;
// or...
std::cout << "There was an error on the following line: " << ? << std::endl;
}
이 예제는 간단하지만 필자가 원하는 기능을 보여주기를 바랍니다.
편집 : 구현에서 g ++ --version : g ++ (GCC) 4.1.2 20071124 (레드햇 4.1.2-42)
없음 그런 일은 C++에 내장되어 있습니다. 어쩌면 당신의 구현은 무언가를 가지고 있지만, 우리는 그것을 모르기 때문에 ... – PlasmaHH
액세스 당 두 번 try-catch 문을 사용하십시오. –
줄 번호는 아무 것도주지 않을 것입니다 - 벡터의 STL 헤더에 있습니다 ... 처음에는 두 개의 'try/catch' 블록을 사용할 수 있습니다. – lapk