View
104
Download
0
Category
Preview:
Citation preview
MSDN Webcast:MSDN Webcast:
VB.NET für Einsteiger und Umsteiger, VB.NET für Einsteiger und Umsteiger, Teil 7Teil 7Strukturierte AusnahmebehandlungStrukturierte Ausnahmebehandlung(Level 100)(Level 100)
Presenter: Daniel WalzenbachPresenter: Daniel Walzenbach
TechnologieberaterTechnologieberaterMicrosoft Deutschland GmbHMicrosoft Deutschland GmbHdaniel.walzenbach@microsoft.comhttp://blogs.msdn.com/walzenbach
VerlosungVerlosung
Programmieren lernen mit Programmieren lernen mit Visual Basic 2005Visual Basic 2005
10 Bücher 10 Bücher werden unter allen Teil-werden unter allen Teil-nehmern verlost, die an nehmern verlost, die an mindes-mindes-tens sieben Webcasts teilnehmentens sieben Webcasts teilnehmen
Visual Studio 2005 Visual Studio 2005 ExpressExpressKleine Geschwister des Visual Studio Kleine Geschwister des Visual Studio 20052005
KostenlosKostenlos
http://www.microsoft.com/germany/msdn/vstudio/products/express/vb/default.mspx
Visual Basic 2005 Express EditionVisual Basic 2005 Express Edition
Visual C# 2005 Express EditionVisual C# 2005 Express Edition
Visual C++ 2005 Express EditionVisual C++ 2005 Express Edition
Visual Web Developer 2005 Express Visual Web Developer 2005 Express EditionEdition
SQL Server 2005 Express EditionSQL Server 2005 Express Edition
AgendaAgenda
Übungsaufgabe Teil 6Übungsaufgabe Teil 6
Strukturierte AusnahmebehandlungStrukturierte Ausnahmebehandlung
ÜbungsaufgabeÜbungsaufgabe
ZusammenfassungZusammenfassung
Übungsaufgabe, Teil 6Übungsaufgabe, Teil 6
Schreiben Sie die zwei Klassen Schreiben Sie die zwei Klassen Amateurspieler und ProfispielerAmateurspieler und Profispieler
Beide Klassen sollen ein Interface Beide Klassen sollen ein Interface ISpielerISpieler implementieren implementieren
Property SpielerNameProperty SpielerName
Property PositionProperty Position
Methode TorschiessenMethode Torschiessen
Schreiben Sie Schreiben Sie eineeine Methode welche Methode welche die Namen, Position und die Namen, Position und geschossenen Tooooore der Spieler geschossenen Tooooore der Spieler ausgibtausgibt
Demonstration #1Demonstration #1
demodemo
Übungsaufgabe, Teil 6Übungsaufgabe, Teil 6
Refactoring Refactoring Übungsaufgabe 6Übungsaufgabe 6
Refactoring
AgendaAgenda
Übungsaufgabe Teil 6Übungsaufgabe Teil 6
Strukturierte Strukturierte AusnahmebehandlungAusnahmebehandlung
ÜbungsaufgabeÜbungsaufgabe
ZusammenfassungZusammenfassung
Was sind Ausnahmen?Was sind Ausnahmen?
Ausnahmen sind unvorhergesehene Ausnahmen sind unvorhergesehene Ereignisse während der Ereignisse während der ProgrammausführungProgrammausführung
Das Behandeln von Ausnahmen wird Das Behandeln von Ausnahmen wird als strukturierte als strukturierte Ausnahmenbehandlung bezeichnetAusnahmenbehandlung bezeichnet
Im Fall einer Ausnahme wird ein Im Fall einer Ausnahme wird ein spezieller Programmteil ausgeführtspezieller Programmteil ausgeführt
Es gibt KEINE globale Es gibt KEINE globale FehlerbehandlungFehlerbehandlung
Fehlerbehandlung bezieht sich immer auf Fehlerbehandlung bezieht sich immer auf einen (beliebig großen) Codeblock in einen (beliebig großen) Codeblock in einer Methodeeiner Methode
Wann treten Ausnahmen Wann treten Ausnahmen auf?auf?Ausnahmen treten auf, wenn die CLR Ausnahmen treten auf, wenn die CLR einen Befehl NICHT ausführen kanneinen Befehl NICHT ausführen kann
Division durch 0Division durch 0
Ansprechen eines nicht initialisierten Ansprechen eines nicht initialisierten FeldesFeldes
Zugriff auf eine nicht existente DateiZugriff auf eine nicht existente Datei
……Sub Main() Dim i, j As Integer i = j / 0 Console.WriteLine(j) End Sub
Demonstration #2Demonstration #2
demodemo
Ausnahmen in .NETAusnahmen in .NET
Behandeln von Behandeln von AusnahmenAusnahmenAusnahmen in .NET Ausnahmen in .NET werden durch Objekte werden durch Objekte der Klasse der Klasse ExceptionException dargestelltdargestellt
Es gibt Es gibt unterschiedliche unterschiedliche „Arten“ „Arten“ (Spezialisierungen) von (Spezialisierungen) von AusnahmenAusnahmen
Alle Ausnahmen erben Alle Ausnahmen erben von von System.ExceptionSystem.Exception
Behandeln von Behandeln von AusnahmenAusnahmenDas Programm und nicht die CLR soll Das Programm und nicht die CLR soll sich um die Ausnahme kümmernsich um die Ausnahme kümmern
Befehle, die zu einer Ausnahme Befehle, die zu einer Ausnahme führen könnten, müssen in einem führen könnten, müssen in einem Try…CatchTry…Catch Block eingeschlossen sein Block eingeschlossen sein
Dim i, j As Integer Try i = j / 0 Console.WriteLine("Ergebnis: {0}", j) Catch Console.WriteLine("Division durch 0 ist nicht erlaubt!") End Try
Informationen zu Informationen zu Ausnahmen Ausnahmen Was war die Ursache für die Was war die Ursache für die Ausnahme?Ausnahme?
Variable vom Typ der Ausnahme nach Variable vom Typ der Ausnahme nach Catch deklarieren. Catch deklarieren.
Enthält das zuständige „Exception Enthält das zuständige „Exception Objekt“ beim Auftreten einer AusnahmeObjekt“ beim Auftreten einer Ausnahme
Dim i, j As Integer Try i = j / 0 Console.WriteLine("Ergebnis: {0}", j) Catch ex As Exception Console.WriteLine(ex.Message) End Try
Demonstration #3Demonstration #3
demodemo
Informationen zu Ausnahmen abfragenInformationen zu Ausnahmen abfragen
Informationen zu Informationen zu AusnahmenAusnahmenExceptionException ist die allgemeinste ist die allgemeinste AusnahmeAusnahme
Spezifische Ausnahmen für Spezifische Ausnahmen für verschiedene verschiedene AusnahmebehandlungenAusnahmebehandlungen
Try Dim DateiInhalt As String DateiInhalt = My.Computer.FileSystem.ReadAllText("C:\temp\HelloWorld.txt") Console.WriteLine(DateiInhalt) Catch ex As IO.FileNotFoundException Console.WriteLine("Datei ist nicht vorhanden.") Catch ex As ArgumentException Console.WriteLine("Ungültigen Dateinamen angegeben.") Catch ex As Exception Console.WriteLine("Ein unbekannter Fehler ist aufgetreten.") Console.WriteLine(ex.Message) Console.WriteLine(ex.StackTrace) End Try
Reihenfolge beachten
Abfrage der Ausnahmen in der Reihenfolge der Spezialisierung. Von speziell nach allgemein.
Ansonsten werden die speziellen Fehler nicht behandelt!
Demonstration #4Demonstration #4
demodemo
Detailinformationen zu Ausnahmen Detailinformationen zu Ausnahmen abfragenabfragen
„„Abschließend“ Abschließend“
Ein Codeblock soll auf jeden Fall Ein Codeblock soll auf jeden Fall (Ausnahme oder nicht) ausgeführt (Ausnahme oder nicht) ausgeführt werdenwerdenTry
Dim DateiInhalt As String DateiInhalt = My.Computer.FileSystem.ReadAllText("C:\temp\HelloWorld.txt") Console.WriteLine(DateiInhalt) Catch ex As IO.FileNotFoundException Console.WriteLine("Datei ist nicht vorhanden.") Catch ex As ArgumentException Console.WriteLine("Ungültigen Dateinamen angegeben.") Catch ex As Exception Console.WriteLine("Ein unbekannter Fehler ist aufgetreten.") Console.WriteLine(ex.Message) Console.WriteLine(ex.StackTrace) Finally ' Aufräumarbeiten
End Try
Der Finally-Block wird immer – unabhängig von dem Auftreten einer Ausnahme – ausgeführt. In diesem Block werden für gewöhnlich Aufräumarbeiten getätigt (Schließen einer Datenbankverbindung, etc.).
Demonstration #5Demonstration #5
demodemo
FinallyFinally
Event BubblingEvent Bubbling
Was passiert bei verschachtelten Was passiert bei verschachtelten Methoden wenn die innere Methode Methoden wenn die innere Methode keine Ausnahmebehandlung keine Ausnahmebehandlung implementiert?implementiert?Sub Main()
Try methode1() Catch ex As Exception Console.WriteLine(ex) End TryEnd Sub Public Sub methode1() methode2()End Sub Public Sub methode2() Dim i, j As Integer i = j / 0 Console.WriteLine("Ergebnis: {0}", j)End Sub
Die Ausnahme wandert wie eine Blase im Wasser den „Call Stack“ nach oben bis eine Ausnahmebehandlung gefunden wird. Falls keine Ausnahmebehandlung vorhanden ist greift die Standardbehandlung der CLR.
Demonstration #6Demonstration #6
demodemo
Event BubblingEvent Bubbling
Ausnahmen werfenAusnahmen werfen
Manchmal kann es notwendig sein, eine Manchmal kann es notwendig sein, eine abgefangene Ausnahme an die aufrufende abgefangene Ausnahme an die aufrufende Methode „zurückzuwerfen“Methode „zurückzuwerfen“
Ausnahmen können mit dem Befehl Ausnahmen können mit dem Befehl ThrowThrow geworfen werdengeworfen werden
Die ursprüngliche Ausnahme kann als Die ursprüngliche Ausnahme kann als Parameter übergeben werden und ist dann Parameter übergeben werden und ist dann als als InnerExceptionInnerException verfügbar verfügbar
Catch ex As Exception
Throw New Exception("Ein unbekannter Fehler ist aufgetreten", ex)
Console.WriteLine(ex.InnerException.Message)
Sub main() Try DateiAusgeben("c:\temp\Hello World.txt") Catch ex As Exception Console.WriteLine(ex.Message) Console.WriteLine(ex.InnerException.Message) End Try End Sub Public Sub DateiAusgeben(ByVal Dateiname As String) Try Dim DateiInhalt As String DateiInhalt = My.Computer.FileSystem.ReadAllText(Dateiname) Console.WriteLine(DateiInhalt) Catch ex As IO.FileNotFoundException Throw New Exception("Datei ist nicht vorhanden.", ex) Catch ex As Exception Throw New Exception("Ein unbekannter Fehler ist aufgetreten.", ex) End Try End Sub
Ausnahmen werfenAusnahmen werfen
Demonstration #7Demonstration #7
demodemo
Ausnahmen werfen und Ausnahmen werfen und InnerExceptionsInnerExceptions
Eigene AusnahmenEigene Ausnahmen
Eine Klasse soll eigene Eine Klasse soll eigene Fehlermeldungen mit Fehlermeldungen mit ThrowThrow an an Programmteile werfen können, Programmteile werfen können, welche die Klasse instanziiert habenwelche die Klasse instanziiert haben
Eigene Ausnahmeklassen werden von Eigene Ausnahmeklassen werden von ApplicationExceptionApplicationException abgeleitet abgeleitet
Im Konstruktor muss der Konstruktor Im Konstruktor muss der Konstruktor der Basisklasse aufgerufen werdender Basisklasse aufgerufen werden
Eigene AusnahmenEigene AusnahmenPublic Class AmateurException Inherits ApplicationException Public Sub New() End Sub Public Sub New(ByVal nachricht As String) MyBase.New() Console.WriteLine(nachricht) End Sub Public Sub New(ByVal nachricht As String, ByVal ex As Exception) MyBase.New(nachricht, ex) End Sub End Class
Demonstration #8Demonstration #8
demodemo
Eigene AusnahmenEigene Ausnahmen
AgendaAgenda
Übungsaufgabe Teil 6Übungsaufgabe Teil 6
Strukturierte AusnahmebehandlungStrukturierte Ausnahmebehandlung
ÜbungsaufgabeÜbungsaufgabe
ZusammenfassungZusammenfassung
AgendaAgenda
Übungsaufgabe Teil 6Übungsaufgabe Teil 6
Strukturierte AusnahmebehandlungStrukturierte Ausnahmebehandlung
ÜbungsaufgabeÜbungsaufgabe
ZusammenfassungZusammenfassung
ZusammenfassungZusammenfassung
Ausnahmen sind unvorhergesehene Ausnahmen sind unvorhergesehene Ereignisse während der Ereignisse während der ProgrammausführungProgrammausführung
Ausnahmen treten auf, wenn die CLR einen Ausnahmen treten auf, wenn die CLR einen Befehl NICHT ausführen kannBefehl NICHT ausführen kann
Ausnahmen in .NET werden durch Objekte Ausnahmen in .NET werden durch Objekte der Klasse der Klasse ExceptionException dargestellt dargestellt
Try…Catch…FinallyTry…Catch…Finally
Mit Mit ThrowThrow können Ausnahmen geworfen können Ausnahmen geworfen werdenwerden
Eigene Ausnahmen werden von Eigene Ausnahmen werden von ApplicationExceptionApplicationException ableiten ableiten
Nächste TermineNächste Termine
VB.NET für Einsteiger und Umsteiger, Teil 8VB.NET für Einsteiger und Umsteiger, Teil 8ArraysArrays
Montag, 18.12.2006 16:00-17:00 UhrMontag, 18.12.2006 16:00-17:00 Uhr
ÜbungsaufgabeÜbungsaufgabe
Implementieren Sie Fehlerbehandlung Implementieren Sie Fehlerbehandlung für das Programm „Kreisinhalt für das Programm „Kreisinhalt berechnen“ aus Webcast #2berechnen“ aus Webcast #2
Schreiben Sie ein Programm welches den Schreiben Sie ein Programm welches den Kreisinhalt (A) berechnet.Kreisinhalt (A) berechnet.A = πr²A = πr²
Verwenden Sie Verwenden Sie Console.WriteLine()Console.WriteLine() und/oder und/oder Console.Write()Console.Write() und/oder und/oder Console.ReadLine() und Console.ReadLine() und System.Math.PISystem.Math.PI
Bitte geben Sie den Radius des Kreises in cm Bitte geben Sie den Radius des Kreises in cm ein: 5ein: 5
Der Kreisinhalt eines Kreises mit Radius 5cm Der Kreisinhalt eines Kreises mit Radius 5cm beträgt ca. 78,5cm².beträgt ca. 78,5cm².
Referenzen & DownloadsReferenzen & Downloads
Objektorientiertes Programmieren in Visual Objektorientiertes Programmieren in Visual BasicBasic
http://msdn2.microsoft.com/de-de/library/b86b82w0(VS.80).aspx
Class-Anweisung Class-Anweisung http://msdn2.microsoft.com/de-de/library/wa0hwf23(VS.80).aspx
Vererbung in Visual BasicVererbung in Visual Basichttp://msdn2.microsoft.com/de-de/library/5x4yd9d5(VS.80).aspx
Schnittstellen in Visual BasicSchnittstellen in Visual Basichttp://msdn2.microsoft.com/de-de/library/http://msdn2.microsoft.com/de-de/library/28e2e18x(VS.80).aspx 28e2e18x(VS.80).aspx
Referenzen & DownloadsReferenzen & Downloads
Ausnahme- und Fehlerbehandlung in Ausnahme- und Fehlerbehandlung in Visual BasicVisual Basic
http://msdn2.microsoft.com/de-de/library/http://msdn2.microsoft.com/de-de/library/s6da8809(VS.80).aspxs6da8809(VS.80).aspx
Microsoft Visual Basic 2005 - Das Microsoft Visual Basic 2005 - Das EntwicklerbuchEntwicklerbuch
http://www.edv-buchversand.de/mspress/http://www.edv-buchversand.de/mspress/product.asp?cnt=product&id=ms-537&lng=0product.asp?cnt=product&id=ms-537&lng=0
MSDN Solve, Antworten für EntwicklerMSDN Solve, Antworten für Entwicklerhttp://msdn-solve.de/http://msdn-solve.de/
Questions and AnswersQuestions and Answers
Daniel Walzenbachdaniel.walzenbach@microsoft.com http://blogs.msdn.com/walzenbach
Recommended