| |

VB.NET - FortgeschritteneFxCop Custom Rule - Wie finde ich raus, welche Exception gefangen wurde??? | |  | Autor: Jumula | Datum: 13.10.08 14:00 |
| Hallo, habe eine CustomRule erstellt, die prüfen soll, ob die XML-Kommentare gesetzt sind. Jetzt möchte ich auch prüfen, wenn eine Exception geworfen wird, ob diese in einem CatchBlock gefangen wird.
Die muss dann nicht dokumentiert werden, sondern nur die, die nicht im TRY-Block stehen oder die, die im Try-Block stehen und nicht abgefangen werden.
Dazu muss ich jetzt herausfinden, welcher Typ Exception in einem Catch behandelt wird. Leider weiß ich nicht, wie ich von dem Instruction-Objekt auf den Namen der Exception komme.
Bin echt total verzweifelt, weil ich die Regel bald fertig haben muss und nicht dahinterkomme. Es gibt auch im Netz total wenig Dokumentation darüber...falls jemand noch einen Link hat, der mir helfen könnte....
Hier ist mein bisheriger Code..er befindet sich in der Check(ByVal vMember As Member)-Methode.
Hier werden erst alle Instructions der Methode gelesen und dann einzeln durchgegangen.
Die Prüfungen, ob eine Exception im TRY-Block geworfen wird oder nicht funktioniert auch ....nur weiß ich nicht, wie ich auf den Exceptionname komme....
'Instructions durchgehen und schauen ob Try-Block drin ist
Dim instructions As InstructionList = DirectCast(vMember, _
Method).Instructions
Dim blnTry As Boolean = False
Dim arrEx As New List(Of String)
Dim arrExImTry As New List(Of String)
Dim arrCatchEx As New List(Of String)
For i As Integer = 0 To instructions.Length - 1
If instructions(i).OpCode = OpCode._Try Then
blnTry = True
Output(vbCrLf & ">>>>>> IM TRY.......")
End If
If instructions(i).OpCode = OpCode._EndTry Then
Output(vbCrLf & ">>>>>> .......ENDTRY")
blnTry = False
End If
'Schleife über alle Statements
If instructions(i).OpCode = OpCode.Throw Then
Dim strExType As String = ""
For Each stat As Statement In DirectCast(vMember, _
Method).Body.Statements
If stat.NodeType = NodeType.Block Then
Dim b As Block = DirectCast(stat, Block)
For Each stat2 As Statement In b.Statements
If stat2.NodeType = NodeType.Throw And _
stat2.SourceContext.StartLine = instructions( _
i).SourceContext.StartLine Then
Dim t As [Throw] = CType(stat2, [Throw])
strExType = t.Expression.Type.FullName
End If
Next
End If
Next
If blnTry Then
'Instruction gefunden: Dieses Throw liegt innerhalb von
' TRY-Block
arrExImTry.Add(strExType)
Output(vbCrLf & "<<<<< INNERHALB TRY: " & strExType)
Else
'Instruction gefunden: Dieses Throw liegt nicht
' innerhalb von TRY-Block
Output(vbCrLf & "<<<<< AUßERHALB TRY: " & strExType)
arrEx.Add(strExType)
End If
End If
If instructions(i).OpCode = OpCode._Catch Then
blnTry = False
Output(vbCrLf & ">>>>>> .......CATCH")
'prüfen, ob eine geworfene Exception aus arrExImTry nicht
' abgefangen wurde
'HIER PROBLEM: WIE KOMME ICH AUF DEN TYP DER EXCEPTION??????????????????
Dim strExTypeAbgefangen As String = ""
End If
Next
'Prüfen, welche der Exceptions, die im TRY geworfen wurden nicht
' abgefangen wurden!
For Each e As String In arrExImTry
If Not arrCatchEx.Contains(e) Then
'wird nicht abgefangen, dann in andere Liste (der nicht
' abgefangenen Ex) rein
arrEx.Add(e)
End If
Next
'Fehlermeldungen ausgeben
Dim strMerk As String = ""
For Each item As String In arrEx
If InStr(strMerk, item) = 0 Then 'Wenn es noch nicht
' aufgenommen wurde.
Me.Problems.Add(New Problem(Me.GetNamedResolution( _
"FehlendesTag", vMember.Name.ToString, "Exception für die" & _
"" & item)))
strMerk += item
End If
Next
|  |
 FxCop Custom Rule - Wie finde ich raus, welche Exception gef... | 790 | Jumula | 13.10.08 14:00 |
 | 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 |
  |
|
TOP! Unser Nr. 1 
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2025 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
|
|