Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Helmine Bors Geändert vor über 10 Jahren
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.