Fehlerbehandlung
Sie sind möglicherweise in früheren Kapiteln auf den Begriff Laufzeitfehler gestoßen. Ein Laufzeitfehler ist ein Fehler, der während der Ausführung des Programms auftritt - daher der Name "Laufzeit"-Fehler.
Normalerweise stürzt das Programm ab oder reagiert nicht mehr, wenn ein Laufzeitfehler auftritt.
Der Compiler kann uns helfen, die meisten Fehler in unserem Code zu erkennen, aber Laufzeitfehler sind meist unvorhersehbar und hängen oft von unsicheren Parametern ab.
Zum Beispiel, wenn der Dateipfad, der in StreamReader
übergeben wird, ungültig ist oder nicht existiert, wird ein Laufzeitfehler auftreten und das Programm wird abstürzen. Daher setzen wir solchen gefährlichen Code oft in try-catch
-Blöcke, um try einen Code auszuführen, und falls er fehlschlägt, catch wir den Fehler und behandeln ihn, anstatt das Programm abstürzen zu lassen.
Folgendes ist die Syntax des try-catch
-Blocks:
index.cs
1234567try { // code to try } catch (Exception errorVar) { // code to handle error }
Hier ist Exception
ein Schlüsselwort, das den Datentyp Exception darstellt.
Beispiel:
index.cs
1234567891011121314151617using 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); } } }
Im Folgenden sind einige häufige Fälle aufgeführt, in denen ein Laufzeitfehler auftreten kann:
Division durch Null
index.cs
123456789101112131415161718using 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
1234567891011121314151617using 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 (für Dictionaries):
index.cs
123456789101112131415161718192021using 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 dem catch
-Block ausgeführt wird:
index.cs
12345678910111213141516171819202122232425using 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 wird die Ausgabe des folgenden Programms sein?
2. Was ist der Zweck des finally
-Blocks in C#?
3. Welche der folgenden Aussagen trifft auf den try-catch
-Block in C# zu?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 2.04
Fehlerbehandlung
Swipe um das Menü anzuzeigen
Sie sind möglicherweise in früheren Kapiteln auf den Begriff Laufzeitfehler gestoßen. Ein Laufzeitfehler ist ein Fehler, der während der Ausführung des Programms auftritt - daher der Name "Laufzeit"-Fehler.
Normalerweise stürzt das Programm ab oder reagiert nicht mehr, wenn ein Laufzeitfehler auftritt.
Der Compiler kann uns helfen, die meisten Fehler in unserem Code zu erkennen, aber Laufzeitfehler sind meist unvorhersehbar und hängen oft von unsicheren Parametern ab.
Zum Beispiel, wenn der Dateipfad, der in StreamReader
übergeben wird, ungültig ist oder nicht existiert, wird ein Laufzeitfehler auftreten und das Programm wird abstürzen. Daher setzen wir solchen gefährlichen Code oft in try-catch
-Blöcke, um try einen Code auszuführen, und falls er fehlschlägt, catch wir den Fehler und behandeln ihn, anstatt das Programm abstürzen zu lassen.
Folgendes ist die Syntax des try-catch
-Blocks:
index.cs
1234567try { // code to try } catch (Exception errorVar) { // code to handle error }
Hier ist Exception
ein Schlüsselwort, das den Datentyp Exception darstellt.
Beispiel:
index.cs
1234567891011121314151617using 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); } } }
Im Folgenden sind einige häufige Fälle aufgeführt, in denen ein Laufzeitfehler auftreten kann:
Division durch Null
index.cs
123456789101112131415161718using 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
1234567891011121314151617using 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 (für Dictionaries):
index.cs
123456789101112131415161718192021using 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 dem catch
-Block ausgeführt wird:
index.cs
12345678910111213141516171819202122232425using 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 wird die Ausgabe des folgenden Programms sein?
2. Was ist der Zweck des finally
-Blocks in C#?
3. Welche der folgenden Aussagen trifft auf den try-catch
-Block in C# zu?
Danke für Ihr Feedback!