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 bereits 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 führt ein Laufzeitfehler dazu, dass das Programm abstürzt oder nicht mehr reagiert.

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

Der Teil (Exception error) kann in der catch-Anweisung weggelassen werden, wenn error nicht verwendet wird.

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:

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:

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

What are some best practices for handling runtime errors?

Can you list other common runtime errors besides the ones mentioned?

Awesome!

Completion rate improved to 2.04

bookFehlerbehandlung

Swipe um das Menü anzuzeigen

Möglicherweise sind Sie in früheren Kapiteln bereits 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 führt ein Laufzeitfehler dazu, dass das Programm abstürzt oder nicht mehr reagiert.

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

Der Teil (Exception error) kann in der catch-Anweisung weggelassen werden, wenn error nicht verwendet wird.

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:

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