Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

System.StackOverflowException. Je sèche. Help !

4 réponses
Avatar
Patrice Ongla
Qq'un a-t-il déjà obtenu l'erreur suivante :
"Une exception non gérée du type 'System.StackOverflowException' s'est
produite dans mscorlib.dll"
Lorsque je teste la ligne fautive dans la fenêtre de commande j'obtiens :
"Impossible de définir la valeur d'une variable locale pour une méthode qui
ne se trouve pas au sommet de la pile."
Jamais vu.
Très curieusement l'erreur apparait seulement lorsque j'assigne au
datasource d'un combo de ma form une dataview particulière.
C'est peut être tout bête mais je sèche complètement.

Sur le code suivant (dans le formulaire):

Private Function Cle_Calculee(ByVal Id As Integer, ByVal TypeDeNoeud As
Type_Noeud) As String
Dim Prefixe As String
Select Case TypeDeNoeud
Case Type_Noeud.TypeP
Prefixe = "P"
Case Type_Noeud.TypeC
Prefixe = "C"
Case Type_Noeud.TypeA
Prefixe = "A"
End Select
Return Prefixe & "_" & Id
End Function



Private Enum Type_Noeud
TypeP= 0
TypeC= 1
TypeA= 2
End Enum

Ca plante sur : Return Prefixe & "_" & Id
et après qq tests je m'aperçois que c'est toute afectation à la variable
locale implicite Cle_Calculee qui m'est interdite.
Un grand merci pour tout coup de main.

4 réponses

Avatar
Patrice Ongla
Désolé, le message était pourtant clair, ça boucle et la pile explose. Reste
à savoir pkoi.. On cherche...

"Patrice Ongla" a écrit dans le message de news:
421b3ea9$0$14803$
Qq'un a-t-il déjà obtenu l'erreur suivante :
"Une exception non gérée du type 'System.StackOverflowException' s'est
produite dans mscorlib.dll"
Lorsque je teste la ligne fautive dans la fenêtre de commande j'obtiens :
"Impossible de définir la valeur d'une variable locale pour une méthode
qui ne se trouve pas au sommet de la pile."
Jamais vu.
Très curieusement l'erreur apparait seulement lorsque j'assigne au
datasource d'un combo de ma form une dataview particulière.
C'est peut être tout bête mais je sèche complètement.

Sur le code suivant (dans le formulaire):

Private Function Cle_Calculee(ByVal Id As Integer, ByVal TypeDeNoeud As
Type_Noeud) As String
Dim Prefixe As String
Select Case TypeDeNoeud
Case Type_Noeud.TypeP
Prefixe = "P"
Case Type_Noeud.TypeC
Prefixe = "C"
Case Type_Noeud.TypeA
Prefixe = "A"
End Select
Return Prefixe & "_" & Id
End Function



Private Enum Type_Noeud
TypeP= 0
TypeC= 1
TypeA= 2
End Enum

Ca plante sur : Return Prefixe & "_" & Id
et après qq tests je m'aperçois que c'est toute afectation à la variable
locale implicite Cle_Calculee qui m'est interdite.
Un grand merci pour tout coup de main.



Avatar
Patrick Philippot
Bonjour,

"Une exception non gérée du type 'System.StackOverflowException' s'est
produite dans mscorlib.dll"
Lorsque je teste la ligne fautive dans la fenêtre de commande
j'obtiens : "Impossible de définir la valeur d'une variable locale
pour une méthode qui ne se trouve pas au sommet de la pile."
...
Ca plante sur : Return Prefixe & "_" & Id



Ce code fonctionne sans problème dans un petit programme de test.

et après qq tests je m'aperçois que c'est toute afectation à la
variable locale implicite Cle_Calculee qui m'est interdite.



On ne voit pas un tel code dans votre exemple. Vous utilisez Return, pas
"Cle_Calculee = ". Peut-on en savoir un peu plus sur le contexte?

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Patrick Philippot
Patrice Ongla wrote:
Désolé, le message était pourtant clair, ça boucle et la pile
explose. Reste à savoir pkoi.. On cherche...



Je ne sais pas si c'est une réponse à ce que je viens de poster... ?

Un stack overflow, c'est à 99% de chances un problème de récursivité.
Cependant, le code que vous présentez n'est pas récursif. Ou je ne vois
pas bien? D'où ma demande d'en savoir un peu plus.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Patrice Ongla
>> "Une exception non gérée du type 'System.StackOverflowException' s'est
produite dans mscorlib.dll"
Lorsque je teste la ligne fautive dans la fenêtre de commande
j'obtiens : "Impossible de définir la valeur d'une variable locale
pour une méthode qui ne se trouve pas au sommet de la pile."
...
Ca plante sur : Return Prefixe & "_" & Id



Ce code fonctionne sans problème dans un petit programme de test.

et après qq tests je m'aperçois que c'est toute afectation à la
variable locale implicite Cle_Calculee qui m'est interdite.



On ne voit pas un tel code dans votre exemple. Vous utilisez Return, pas
"Cle_Calculee = ". Peut-on en savoir un peu plus sur le contexte?



Oui mais manifestement (et ça parait naturel) le compilo fait la même chose
dans les deux cas. Je m'en rends compte car j'ai la même erreur en essayant
d'afecter directement Cle_Calculee dans la fenêtre de commande.

Sur le fond, j'ai trouvé : une boucle induite par l'utilisation implicite du
même binding context pour deux contrôles de mon form qui doivent en fait en
utiliser deux séparés.
Merci pour votre aide.