Visual C# 2012 Grundkurs

Exceptions

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Exceptions dienen der Überprüfung von bestimmten Annahmen, welche zur korrekten Ausführung des Codes notwendig sind. Eine Exception löst eine Reaktion aus, sobald eine dieser Annahmen nicht zutrifft.

Transkript

In diesem Abschnitt geht es um Exceptions. Das ist all der Code, den wir schreiben, wenn irgendetwas einmal nicht so läuft, wie wir glauben, dass es hätte laufen sollen. Ich will jetzt einfach mal irgendwie so eine Exception auslösen. Ich definiere dazu zwei Variablen. Dann kann ich irgendwie sowas schreiben: A durch B, B ist jetzt 0. Also die Division durch 0. Das sollte eigentlich schiefgehen. Wenn ich das Programm starte, bekomme ich eine "divide by 0 exception". Damit wird das Programm super hart abgebrochen und ich kann mit dem Programm überhaupt nichts mehr machen. Um jetzt vielleicht noch irgendwelche Datensicherungen noch vornehmen zu können, wenn so eine Exception passiert vielleicht passiert die Exception an einer Stelle, die gar nicht so kritisch ist im Programm, dafür kann ich das sog. Try-Catch Statement nehmen. Da gibt es wiederum ein Code Snippet, das heißt "Try". Wenn man da zweimal die Tab-Taste drückt, nachdem man "Try" getippt hat, dann bekommt man schon so ein schönes Gerüst für Exceptions. Da kann ich den ganzen Code jetzt reintun. Nehmen wir den noch gleich mit. Jetzt an der Stelle wird der Exception aufgefallen, es steht jetzt hier einfach nur Exception drin ohne irgendeine Variablen. D.h., ich kann jetzt an der Stelle auf die Exception selber gar nicht zugreifen. Dieses Throw hier, es sagt einfach: "Nimm die letzte Exception, die passiert ist und wirf sie wieder." Lasst uns das grade mal machen. Das sieht jetzt genauso aus wie vorher. Also, D.h. dieser Code macht jetzt an der Stelle gar nicht so viel Sinn, es sei denn ich reagiere hier, indem ich jetzt z.B. irgend so was rausschreibe hier. Ich kann hier noch irgend eine Reaktion einbauen, bevor die Exception dann tatsächlich ausgelöst wird und diese Reaktion, die wird dann eben noch schnell eingeflochten. Ich kann dann natürlich auch ganz was anderes machen, ich kann jetzt eben hier einen Namen für diese Exception mitgeben. Dann kann ich sowas machen, wie x.message; Exception hat eine Property Message und wenn ich das "Throw" jetzt hier rausnehme jetzt kann ich sowas schreiben wie: "Das Programm terminiert ganz normal". Wenn ich das jetzt wieder starte, sehe ich, ich kann angeben, was passiert ist und ich kann das Programm aber ganz normal weiterlaufen lassen, als sei nichts passiert. Das wäre in den Fällen, in denen es möglich ist, innerhalb eines Programms irgendwelche Dinge vorzunehmen, wie noch mal schnell alle Daten zu speichern, oder die gegenwärtige Transaktion rückgängig zu machen. Wenn wir mit Datenbanken arbeiten, haben wir die Möglichkeit Transaktionen abzubrechen und wissen, dass die Datenbank danach wieder in einem plausiblen Stand ist. Ansonsten ist es auch möglich, eine Klasse zu definieren, wie z.B. hier diese Ignore Exception. Jetzt kann ich gezielt so eine Ignore Exception an der Stelle abfangen. Da sieht man schon mal ganz gut, wofür dieser Catch-Fall ist, wenn man den Variablennamen hier nicht angibt. Wenn man einen angibt und tut hier drin nichts, gibt der Compiler eine Warnung aus: "The variable e is declared but never used." Das wollen wir an der Stelle nicht haben und deswegen können wir die Variable hier wegnehmen. Trotzdem ist dieser Fall, dieser Ignore Fall, für diese Ignore Exception reserviert. Beim Rest der Exceptions können wir jetzt sagen: "Wirf sie mir doch noch mal", weil da nichts mehr zu retten ist. Es fehlt noch was; und zwar "through new ignore exception". Wenn ich den Code ausführe, terminiert das Programm ganz normal, weil die Ignore Exception vor dieser komischen Zeile passiert ist, mit der devision by Null. Diese Ignore Exception ist ignoriert worden, deswegen terminiert das Programm normal. Wenn die Ignore Exception nicht passiert und ich führe den Code aus, dann laufe ich diese harte Exception rein und das Programm terminiert. Also kann man sehr schön staffeln, was mit verschiedenen Exceptions passieren soll. Das finde ich ein sehr schönes Mittel in .Net, um mit Programmausnahmen zu arbeiten. Und dann ist es ganz wunderbar, man kann noch irgendwie Zusatzwerte definieren für diese Exceptions, die kann man dann vielleicht sogar per Property zugänglich machen und kann dann irgendwie so einen Konstruktor schaffen "Public". Es ist dann natürlich keine Ignore Exception mehr, sondern das ist irgendwie eine, nennen wir das mal "Spezialfall Exception". Dann machen wir hier so einen Konstruktor. Der Konstruktor nimmt jetzt irgendwie einen String-Message an und einen Int-Zusatz. Und jetzt kann dieses String der Nachricht an den Konstruktor der Basisklasse weiterreichen und kann dann hier trotzdem noch diese interne Zusatzvariable mit diesem Zusatzwert definieren. Jetzt kann ich in meinem Programm, wenn also irgend so eine Exception der Fall ist, dann kann ich hier so einen Text angeben und ich kann irgendeine Variable angeben. Jetzt muss ich gerade mal die Ignore Exception austauschen durch so eine Spezialfall Exception. Genau. Und jetzt kann ich eben schreiben "Eine Spezialexception ist passiert: + SI.Zusatz. Und damit kann ich auch mit diesen Zusatzdaten, die der Exception mitgegeben worden sind, arbeiten. Okay, soweit der Abschnitt zu den Exceptions in C#.

Visual C# 2012 Grundkurs

Schreiben Sie eigene Programme in C# und lernen Sie dazu alle Schlüsselwörter und die meisten Konstrukte kennen, um sicher mit dieser Programmierspreche umzugehen.

7 Std. 1 min (44 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!