Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater."—  Präsentation transkript:

1 MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater Microsoft Deutschland GmbH daniel.walzenbach@microsoft.com http://blogs.msdn.com/walzenbach

2 Verlosung Programmieren lernen mit Visual Basic 2005 10 Bücher werden unter allen Teil- nehmern verlost, die an mindes- tens sieben Webcasts teilnehmen

3 Visual Studio 2005 Express Kleine Geschwister des Visual Studio 2005 Kostenlos http://www.microsoft.com/germany/msdn/v studio/products/express/vb/default.mspx http://www.microsoft.com/germany/msdn/v studio/products/express/vb/default.mspx Visual Basic 2005 Express Edition Visual C# 2005 Express Edition Visual C++ 2005 Express Edition Visual Web Developer 2005 Express Edition SQL Server 2005 Express Edition

4 Agenda Übungsaufgabe Teil 6 Strukturierte Ausnahmebehandlung ÜbungsaufgabeZusammenfassung

5 Übungsaufgabe, Teil 6 Schreiben Sie die zwei Klassen Amateurspieler und Profispieler Beide Klassen sollen ein Interface ISpieler implementieren Property SpielerName Property Position Methode Torschiessen Schreiben Sie eine Methode welche die Namen, Position und geschossenen Tooooore der Spieler ausgibt

6 Demonstration #1 demo Übungsaufgabe, Teil 6

7 Refactoring Übungsaufgabe 6 Refactoring

8 Agenda Übungsaufgabe Teil 6 Strukturierte Ausnahmebehandlung ÜbungsaufgabeZusammenfassung

9 Was sind Ausnahmen? Ausnahmen sind unvorhergesehene Ereignisse während der Programmausführung Das Behandeln von Ausnahmen wird als strukturierte Ausnahmenbehandlung bezeichnet Im Fall einer Ausnahme wird ein spezieller Programmteil ausgeführt Es gibt KEINE globale Fehlerbehandlung Fehlerbehandlung bezieht sich immer auf einen (beliebig großen) Codeblock in einer Methode

10 Wann treten Ausnahmen auf? Ausnahmen treten auf, wenn die CLR einen Befehl NICHT ausführen kann Division durch 0 Ansprechen eines nicht initialisierten Feldes Zugriff auf eine nicht existente Datei … Sub Main() Dim i, j As Integer i = j / 0 Console.WriteLine(j) End Sub

11 Demonstration #2 demo Ausnahmen in.NET

12 Behandeln von Ausnahmen Ausnahmen in.NET werden durch Objekte der Klasse Exception dargestellt Es gibt unterschiedliche Arten (Spezialisierungen) von Ausnahmen Alle Ausnahmen erben von System.Exception

13 Behandeln von Ausnahmen Das Programm und nicht die CLR soll sich um die Ausnahme kümmern Befehle, die zu einer Ausnahme führen könnten, müssen in einem Try…Catch 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

14 Informationen zu Ausnahmen Was war die Ursache für die Ausnahme? Variable vom Typ der Ausnahme nach Catch deklarieren. Enthält das zuständige Exception Objekt 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

15 Demonstration #3 demo Informationen zu Ausnahmen abfragen

16 Informationen zu Ausnahmen Exception ist die allgemeinste Ausnahme Spezifische Ausnahmen für verschiedene Ausnahmebehandlungen 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!

17 Demonstration #4 demo Detailinformationen zu Ausnahmen abfragen

18 Abschließend Ein Codeblock soll auf jeden Fall (Ausnahme oder nicht) ausgeführt werden 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) 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.).

19 Demonstration #5 demoFinally

20 Event Bubbling Was passiert bei verschachtelten Methoden wenn die innere Methode keine Ausnahmebehandlung implementiert? Sub Main() Try methode1() Catch ex As Exception Console.WriteLine(ex) End Try End 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.

21 Demonstration #6 demo Event Bubbling

22 Ausnahmen werfen Manchmal kann es notwendig sein, eine abgefangene Ausnahme an die aufrufende Methode zurückzuwerfen Ausnahmen können mit dem Befehl Throw geworfen werden Die ursprüngliche Ausnahme kann als Parameter übergeben werden und ist dann als InnerException verfügbar Catch ex As Exception Throw New Exception("Ein unbekannter Fehler ist aufgetreten", ex) Console.WriteLine(ex.InnerException.Message)

23 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 werfen

24 Demonstration #7 demo Ausnahmen werfen und InnerExceptions

25 Eigene Ausnahmen Eine Klasse soll eigene Fehlermeldungen mit Throw an Programmteile werfen können, welche die Klasse instanziiert haben Eigene Ausnahmeklassen werden von ApplicationException abgeleitet Im Konstruktor muss der Konstruktor der Basisklasse aufgerufen werden

26 Eigene Ausnahmen Public 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

27 Demonstration #8 demo Eigene Ausnahmen

28 Agenda Übungsaufgabe Teil 6 Strukturierte Ausnahmebehandlung ÜbungsaufgabeZusammenfassung

29 Agenda Übungsaufgabe Teil 6 Strukturierte Ausnahmebehandlung ÜbungsaufgabeZusammenfassung

30 Zusammenfassung Ausnahmen sind unvorhergesehene Ereignisse während der Programmausführung Ausnahmen treten auf, wenn die CLR einen Befehl NICHT ausführen kann Ausnahmen in.NET werden durch Objekte der Klasse Exception dargestellt Try…Catch…Finally Mit Throw können Ausnahmen geworfen werden Eigene Ausnahmen werden von ApplicationException ableiten

31 Nächste Termine VB.NET für Einsteiger und Umsteiger, Teil 8 Arrays Montag, 18.12.2006 16:00-17:00 Uhr

32 Übungsaufgabe Implementieren Sie Fehlerbehandlung für das Programm Kreisinhalt berechnen aus Webcast #2 Schreiben Sie ein Programm welches den Kreisinhalt (A) berechnet. A = πr² Verwenden Sie Console.WriteLine() und/oder Console.Write() und/oder Console.ReadLine() und System.Math.PI Bitte geben Sie den Radius des Kreises in cm ein: 5 Der Kreisinhalt eines Kreises mit Radius 5cm beträgt ca. 78,5cm².

33 Referenzen & Downloads Objektorientiertes Programmieren in Visual Basic http://msdn2.microsoft.com/de- de/library/b86b82w0(VS.80).aspx http://msdn2.microsoft.com/de- de/library/b86b82w0(VS.80).aspxClass-Anweisung http://msdn2.microsoft.com/de- de/library/wa0hwf23(VS.80).aspx http://msdn2.microsoft.com/de- de/library/wa0hwf23(VS.80).aspx Vererbung in Visual Basic http://msdn2.microsoft.com/de- de/library/5x4yd9d5(VS.80).aspx http://msdn2.microsoft.com/de- de/library/5x4yd9d5(VS.80).aspx Schnittstellen in Visual Basic http://msdn2.microsoft.com/de- de/library/28e2e18x(VS.80).aspx http://msdn2.microsoft.com/de- de/library/28e2e18x(VS.80).aspx

34 Referenzen & Downloads Ausnahme- und Fehlerbehandlung in Visual Basic http://msdn2.microsoft.com/de- de/library/s6da8809(VS.80).aspx http://msdn2.microsoft.com/de- de/library/s6da8809(VS.80).aspx Microsoft Visual Basic 2005 - Das Entwicklerbuch http://www.edv- buchversand.de/mspress/product.asp?cnt=product&id= ms-537&lng=0 http://www.edv- buchversand.de/mspress/product.asp?cnt=product&id= ms-537&lng=0 MSDN Solve, Antworten für Entwickler http://msdn-solve.de/

35 Questions and Answers Daniel Walzenbach daniel.walzenbach@microsoft.com http://blogs.msdn.com/walzenbach

36


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

Ähnliche Präsentationen


Google-Anzeigen