2015-12-08 1 views
1

J'ecrivais un programme qui utilise un des vecteurs en studio visuel 2012. Ce fragment est le problème de mon code:ne peut pas attraper exception « cteur de l'indice hors de portée » dans Visual Studio 2012

std::vector< std::vector< std::vector<Eigen::Matrix3d> > > tensor; 
//some code 
try 
    { 
     ret = tensor[x][y][z]; 
    } 
    catch(...) 
    { 
     std::cout << "Index out of range!" << std::endl; 
    } 

Lorsque x, y ou z est hors de portée, le programme se termine au lieu de gérer l'exception.

Est-il question de certains paramètres dans VS?

+0

La seule façon de répondre à la question telle qu'elle est écrite est de deviner comment 'tensor' est défini. –

+0

Peu importe comment il est défini. La question portait sur la gestion des exceptions lancées par les vecteurs. Explication que l'opérateur [] ne lance aucune exception était une réponse dont j'avais besoin. –

+0

Euh, c'est bien, mais votre exemple de code n'utilise nulle part 'vector', donc l'affirmation que votre programme "utilise des vecteurs" ne décrit en aucun cas le problème. Cela rend la question une mauvaise question, même si quelqu'un a deviné correctement ce que vous essayiez de demander. –

Répondre

1

Peu importe que vous utilisiez un vecteur ou un tableau, l'utilisation de l'opérateur d'indexation de tableau [] ne déclenchera pas d'exception lors de l'indexation hors limites. Tout ce que vous obtenez est undefined comportement.

Si vous souhaitez vérifier les limites, utilisez std::vector et sa fonction d'accès at.