MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level...

36
MSDN Webcast: MSDN Webcast: VB.NET für Einsteiger und VB.NET für Einsteiger und Umsteiger, Teil 7 Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung Strukturierte Ausnahmebehandlung (Level 100) (Level 100) Presenter: Daniel Presenter: Daniel Walzenbach Walzenbach Technologieberater Technologieberater Microsoft Deutschland GmbH Microsoft Deutschland GmbH [email protected] http://blogs.msdn.com/walzenbach

Transcript of MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level...

Page 1: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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 [email protected]://blogs.msdn.com/walzenbach

Page 2: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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

Page 3: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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

Page 4: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

AgendaAgenda

Übungsaufgabe Teil 6Übungsaufgabe Teil 6

Strukturierte AusnahmebehandlungStrukturierte Ausnahmebehandlung

ÜbungsaufgabeÜbungsaufgabe

ZusammenfassungZusammenfassung

Page 5: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

Ü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

Page 6: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

Demonstration #1Demonstration #1

demodemo

Übungsaufgabe, Teil 6Übungsaufgabe, Teil 6

Page 7: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

Refactoring Refactoring Übungsaufgabe 6Übungsaufgabe 6

Refactoring

Page 8: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

AgendaAgenda

Übungsaufgabe Teil 6Übungsaufgabe Teil 6

Strukturierte Strukturierte AusnahmebehandlungAusnahmebehandlung

ÜbungsaufgabeÜbungsaufgabe

ZusammenfassungZusammenfassung

Page 9: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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

Page 10: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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

Page 11: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

Demonstration #2Demonstration #2

demodemo

Ausnahmen in .NETAusnahmen in .NET

Page 12: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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

Page 13: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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

Page 14: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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

Page 15: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

Demonstration #3Demonstration #3

demodemo

Informationen zu Ausnahmen abfragenInformationen zu Ausnahmen abfragen

Page 16: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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!

Page 17: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

Demonstration #4Demonstration #4

demodemo

Detailinformationen zu Ausnahmen Detailinformationen zu Ausnahmen abfragenabfragen

Page 18: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

„„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.).

Page 19: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

Demonstration #5Demonstration #5

demodemo

FinallyFinally

Page 20: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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.

Page 21: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

Demonstration #6Demonstration #6

demodemo

Event BubblingEvent Bubbling

Page 22: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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)

Page 23: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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

Page 24: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

Demonstration #7Demonstration #7

demodemo

Ausnahmen werfen und Ausnahmen werfen und InnerExceptionsInnerExceptions

Page 25: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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

Page 26: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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

Page 27: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

Demonstration #8Demonstration #8

demodemo

Eigene AusnahmenEigene Ausnahmen

Page 28: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

AgendaAgenda

Übungsaufgabe Teil 6Übungsaufgabe Teil 6

Strukturierte AusnahmebehandlungStrukturierte Ausnahmebehandlung

ÜbungsaufgabeÜbungsaufgabe

ZusammenfassungZusammenfassung

Page 29: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

AgendaAgenda

Übungsaufgabe Teil 6Übungsaufgabe Teil 6

Strukturierte AusnahmebehandlungStrukturierte Ausnahmebehandlung

ÜbungsaufgabeÜbungsaufgabe

ZusammenfassungZusammenfassung

Page 30: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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

Page 31: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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

Page 32: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

Ü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².

Page 33: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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

Page 34: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

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/

Page 35: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.

Questions and AnswersQuestions and Answers

Daniel [email protected] http://blogs.msdn.com/walzenbach

Page 36: MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.