Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Fehlerbehandlung | Datenstrukturen & Dateiverarbeitung
C# Jenseits der Grundlagen

bookFehlerbehandlung

Möglicherweise sind Sie in früheren Kapiteln auf den Begriff Laufzeitfehler gestoßen. Ein Laufzeitfehler ist ein Fehler, der während der Programmausführung auftritt – daher der Name "Laufzeit"fehler.

In der Regel stürzt das Programm ab oder reagiert nicht mehr, wenn ein Laufzeitfehler auftritt.

Der Compiler kann die meisten Fehler im Code erkennen, aber Laufzeitfehler sind meist unvorhersehbar und hängen oft von unsicheren Parametern ab.

Wenn zum Beispiel der an StreamReader übergebene Dateipfad ungültig ist oder nicht existiert, tritt ein Laufzeitfehler auf und das Programm stürzt ab. Daher kann man solchen riskanten Code häufig in try-catch-Blöcke setzen, um den Code auszuprobieren und im Fehlerfall den Fehler abzufangen und zu behandeln, anstatt das Programm abstürzen zu lassen.

Nachfolgend die Syntax des try-catch-Blocks:

index.cs

index.cs

copy
1234567
try { // code to try } catch (Exception errorVar) { // code to handle error }

Hier ist Exception ein Schlüsselwort, das den Datentyp Exception repräsentiert.

Beispiel

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.IO; class Program { static void Main(string[] args) { try { new StreamWriter("C:/a/random/path/that/does/not/exist.txt"); } catch(Exception error) { Console.WriteLine(error.Message); } } }
Note
Hinweis

Wir können den Teil (Exception error) aus der catch-Anweisung weglassen, wenn wir error nicht verwenden.

Im Folgenden sind einige häufige Fälle aufgeführt, in denen ein Laufzeitfehler auftreten kann:

Division durch Null

index.cs

index.cs

copy
123456789101112131415161718
using System; class Program { static void Main(string[] args) { try { int a = 100; int b = 0; int result = a / b; } catch { Console.WriteLine("ERROR: Division by Zero."); } } }

Ungültiger Index eines Arrays oder einer Liste

index.cs

index.cs

copy
1234567891011121314151617
using System; class Program { static void Main(string[] args) { try { var exampleArray = new int[10]; Console.WriteLine(exampleArray[20]); } catch { Console.WriteLine("ERROR: The array index is out of bounds."); } } }

Schlüssel nicht gefunden (bei Dictionaries):

index.cs

index.cs

copy
123456789101112131415161718192021
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } } }

Der finally-Block

Es gibt auch einen optionalen Codeblock namens finally, der nach Ausführung des catch-Blocks ausgeführt wird. Der finally-Block wird immer nach den Blöcken try und catch ausgeführt, unabhängig davon, ob eine Ausnahme ausgelöst wurde oder nicht. Dies garantiert, dass jeder Code im finally-Block immer ausgeführt wird, was ihn nützlich für Aufgaben wie das Schließen von Dateien oder das Freigeben von Ressourcen macht.

index.cs

index.cs

copy
12345678910111213141516171819202122232425
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } finally { Console.WriteLine("This line will show after the error"); } } }

1. Was ist die Ausgabe des folgenden Programms?

2. Welchen Zweck hat der finally-Block in C#?

3. Welche der folgenden Aussagen trifft auf den try-catch-Block in C# zu?

question mark

Was ist die Ausgabe des folgenden Programms?

Select the correct answer

question mark

Welchen Zweck hat der finally-Block in C#?

Select the correct answer

question mark

Welche der folgenden Aussagen trifft auf den try-catch-Block in C# zu?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 9

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

What are some other examples of runtime errors?

Can you explain how the try-catch block works with a code example?

What is the difference between compile-time and runtime errors?

Awesome!

Completion rate improved to 2.04

bookFehlerbehandlung

Swipe um das Menü anzuzeigen

Möglicherweise sind Sie in früheren Kapiteln auf den Begriff Laufzeitfehler gestoßen. Ein Laufzeitfehler ist ein Fehler, der während der Programmausführung auftritt – daher der Name "Laufzeit"fehler.

In der Regel stürzt das Programm ab oder reagiert nicht mehr, wenn ein Laufzeitfehler auftritt.

Der Compiler kann die meisten Fehler im Code erkennen, aber Laufzeitfehler sind meist unvorhersehbar und hängen oft von unsicheren Parametern ab.

Wenn zum Beispiel der an StreamReader übergebene Dateipfad ungültig ist oder nicht existiert, tritt ein Laufzeitfehler auf und das Programm stürzt ab. Daher kann man solchen riskanten Code häufig in try-catch-Blöcke setzen, um den Code auszuprobieren und im Fehlerfall den Fehler abzufangen und zu behandeln, anstatt das Programm abstürzen zu lassen.

Nachfolgend die Syntax des try-catch-Blocks:

index.cs

index.cs

copy
1234567
try { // code to try } catch (Exception errorVar) { // code to handle error }

Hier ist Exception ein Schlüsselwort, das den Datentyp Exception repräsentiert.

Beispiel

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.IO; class Program { static void Main(string[] args) { try { new StreamWriter("C:/a/random/path/that/does/not/exist.txt"); } catch(Exception error) { Console.WriteLine(error.Message); } } }
Note
Hinweis

Wir können den Teil (Exception error) aus der catch-Anweisung weglassen, wenn wir error nicht verwenden.

Im Folgenden sind einige häufige Fälle aufgeführt, in denen ein Laufzeitfehler auftreten kann:

Division durch Null

index.cs

index.cs

copy
123456789101112131415161718
using System; class Program { static void Main(string[] args) { try { int a = 100; int b = 0; int result = a / b; } catch { Console.WriteLine("ERROR: Division by Zero."); } } }

Ungültiger Index eines Arrays oder einer Liste

index.cs

index.cs

copy
1234567891011121314151617
using System; class Program { static void Main(string[] args) { try { var exampleArray = new int[10]; Console.WriteLine(exampleArray[20]); } catch { Console.WriteLine("ERROR: The array index is out of bounds."); } } }

Schlüssel nicht gefunden (bei Dictionaries):

index.cs

index.cs

copy
123456789101112131415161718192021
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } } }

Der finally-Block

Es gibt auch einen optionalen Codeblock namens finally, der nach Ausführung des catch-Blocks ausgeführt wird. Der finally-Block wird immer nach den Blöcken try und catch ausgeführt, unabhängig davon, ob eine Ausnahme ausgelöst wurde oder nicht. Dies garantiert, dass jeder Code im finally-Block immer ausgeführt wird, was ihn nützlich für Aufgaben wie das Schließen von Dateien oder das Freigeben von Ressourcen macht.

index.cs

index.cs

copy
12345678910111213141516171819202122232425
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } finally { Console.WriteLine("This line will show after the error"); } } }

1. Was ist die Ausgabe des folgenden Programms?

2. Welchen Zweck hat der finally-Block in C#?

3. Welche der folgenden Aussagen trifft auf den try-catch-Block in C# zu?

question mark

Was ist die Ausgabe des folgenden Programms?

Select the correct answer

question mark

Welchen Zweck hat der finally-Block in C#?

Select the correct answer

question mark

Welche der folgenden Aussagen trifft auf den try-catch-Block in C# zu?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 9
some-alt