Announcement

Collapse
No announcement yet.

Funktion bricht ab ohne Fehlermeldung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Funktion bricht ab ohne Fehlermeldung

    Hallo Experten,

    folgender Code verhält sich unerwartet:[highlight=c#]private void DoSth()
    {
    if (m_DispIn.Image == 0) return;
    if (!Cvb.Image.IsImage(m_DispIn.Image)) return;
    if (m_iCurrentPrdNr < 0) return;

    m_DispIn.RemoveAllOverlays();

    Point ptUL, ptLR;

    ptUL = m_prdNew.ccFoil[m_iCurrentPrdNr % 4].ptPatternUL; // Markierte Zeile
    ptLR = m_prdNew.ccFoil[m_iCurrentPrdNr % 4].ptPatternLR;
    DoSthCoolWith(m_DispIn, m_iCurrentPrdNr);
    }[/highlight]Das heißt, bis zur markierten Zeile läuft wie gewohnt. Die Berechnung in der eckigen Klammer ist aber falsch. Statt "%" müsste es "/" heißen. Das Feld "ccFoil" ist lediglich 2 Elemente groß. "m_iCurrentPrdNr" kann aber bis zu 7 werden.

    Nun kann das Ergebnis in der Klammer Werte 0..3 annehmen. Korrekt für das Feld ccFoil wären aber nur Werte 0..1. Ein Wert von 2 an dieser Stelle führt aber nicht zur Erwarteten OutOfRangeException, sondern tut nichts und verlässt die Funktion.
    Der unzulässige Wert führt also dazu, dass die markierte Zeile sich wie eine return verhält.

    Für die Fehlersuche ist dieses Verhalten ausgesprochen hinderlich.
    Es tritt sowohl unter VisualStudio2005Express als auch unter VisualStudio2008Standard auf.

    Ist dieses Verhalten bekannt?
    Welche Auslöser kann es haben?

    Mit freundlichem Gruß


    luker

  • #2
    Die Exception wird auftreten und der Code springt dann automatisch zum nächsten catch Handler. Ich vermute mal du hast irgendwo einen der die Exception einfach schluckt dann bekommst du nichts mit.

    Im Menu Debug/Exceptions kannst du je Exceptiontyp oder Gruppe einstellen das Exceptions auch schon beim werfen dazu führen das der Debugger dort hält und nicht erst an dem Punkt wo diese gefangen(und behandelt) wird. Das sollte dir weiterhelfen.

    Comment

    Working...
    X