vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Throw Exception aus Function 
Autor: ewaldvb
Datum: 02.11.11 20:08

Hallo!

Ich habe eine Geerbte Klasse mit einer neuen Function.
Da drinnen möchte ich eine Exception schmeissen, die aber im "aufrufenden" Code einschlägt.
Leider funktioniert das aber genau Nicht so.


Das ganze sieht in etwa so aus:

Public Class MyClass
 ' erbt Irgendwas
 
Public Function TestArr(ByVal Arr1() As String, ByVal Arr2() As String) As _
  Integer
 
    If Arr1.Length <> Arr2.Length Then
        Throw New ArgumentException("Die Anzahl der beiden Arrays ist nicht" & _
          "ident")
        ' Return -1
    End If
 
    ' Bei Fehler bleibt das Programm leider hier stehen:
    If Arr1.Length = Arr2.Length Then
        If MsgBox("Jetzt Starten?", MsgBoxStyle.YesNo, "Start") = _
          MsgBoxResult.Yes Then
            ' Tu irgendwas .....
            Return Arr1.Length + Arr2.Length - 2    ' Besonders sinnvoll ;)
        End If
    End If
 
End Function
 
End Class
 
'
' und dann irgendwo in einer Form dieser Aufruf:
'
 
    ' .....
 
    ' Der folgende Aufruf muss einen Fehler zurückbringen, da die Länge der 
    ' beiden Arrays nicht gleich ist. Das Programm soll genau auf dieser 
    ' Anweisung stehen bleiben.
 
    Dim I As Integer = TestArr(New String() {"A", "B"}, New String() {"1", "2", _
      "3"})
 
    ' .....
Mit F5 starten.
Das Programm bleibt jetzt zwar stehen, aber IN der Function TestArr(...) und zwar beim 1. Statement nach dem "Throw".
Das möchte ich aber nicht, ich hätte gerne, dass das Programm IN der FORM auf der Zeile mit dem Aufruf der Function TestArr(..) stehenbleibt.

Wer weiss da was?
Oder, was habe ich übersehen?

lg
Ewald
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Throw Exception aus Function 
Autor: Preisser
Datum: 02.11.11 20:37

Hallo,

wenn eine nicht abgefangene Exception geworfen wird, zeigt VS standardmäßig die Codeposition des Stackframes an, das am nächsten an der Stelle liegt, an der die Exception geworfen wurde, und von der der Quellcode zur Verfügung steht, und das ist dann eben die Zeile mit "Throw ...". Beim Debuggen gibt es jedoch unten einen Tab "Aufrufliste", wo man den aktuellen Stack sieht (ich weiß allerdings nicht, ob das auch in der Express-Edition geht, müsste aber normalerweise schon):

Da kannst du dann z.B. bis zur ursprünglichen Form zurückgehen (beim Doppelklick auf einen Eintrag wird die Codestelle angezeigt).

Bei abgefangenen Exceptions kann man auch über die StackTrace-Property den Stack ausgeben lassen, wie er beim Werfen der Exception war.

Beitrag wurde zuletzt am 02.11.11 um 20:56:57 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Throw Exception aus Function 
Autor: ewaldvb
Datum: 03.11.11 08:51

Danke erstmal.

Nur hätte ich eben gerne, dass die Function auch "geschmissen" wird: Der Ablauf sollte dort stehen bleiben, von wo aus die Function aufgerufen wurde.
Also auf der Zeile in der Hauptroutine.


Lg Ewald
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Throw Exception aus Function 
Autor: Manfred X
Datum: 03.11.11 09:01

Hallo!

Der Debugger hält das Programm im Code dort an, wo die
Exception geworfen wird. Dort kann man in der Regel
feststellen, wieso es zu der Exception kam.
Lies noch mal, was Preisser gepostet hat.

Weiter im Code-Ablauf (nach dem "Schmeissen") geht es nicht
an der Aufrufstelle, sondern es wird gesucht, wo in der
Aufrufliste ein Try-Catch-Block zu finden ist.

MfG
Manfred

Beitrag wurde zuletzt am 03.11.11 um 09:02:03 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Throw Exception aus Function 
Autor: ModeratorDaveS (Moderator)
Datum: 03.11.11 12:39

Dann solltest du Try/Catch verwenden. Der Debugger hält nur an wenn 1. kein Try/Catch weiter "oben" im Thread existiert, oder 2. die entsprechende Option unter Debug/Exceptions gesetzt ist.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Throw Exception aus Function 
Autor: ewaldvb
Datum: 03.11.11 16:44

Hallo Manfred!

Genau so stellt es sich ja auch dar.

Danke.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Throw Exception aus Function 
Autor: ewaldvb
Datum: 03.11.11 16:46

Ebenfalls: Danke für Eure Mühen!

lg
Ewald
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel