Exceptions and Defensive Coding
Try Catch
Try/catch keeps a handled exception from crashing the program.
try catch
A `catch` block handles an exception thrown inside a `try` block.
Try Catch
TryCatch.cs
Replay: real traced execution (multi-file project)
using System;
class Program
{
static void Main()
{
string text = "42";
int value = 0;
string status = "ok";
try
{
value = int.Parse(text);
}
catch (FormatException)
{
status = "invalid";
}
Console.WriteLine($"text={text}");
Console.WriteLine($"status={status}");
Console.WriteLine($"value={value}");
}
}
using System;
class Program
{
static void Main()
{
string text = "bad";
int value = 0;
string status = "ok";
try
{
value = int.Parse(text);
}
catch (FormatException)
{
status = "invalid";
}
Console.WriteLine($"text={text}");
Console.WriteLine($"status={status}");
Console.WriteLine($"value={value}");
}
}
using System;
class Program
{
static void Main()
{
string text = "7";
int value = 0;
string status = "ok";
try
{
value = int.Parse(text);
}
catch (FormatException)
{
status = "invalid";
}
Console.WriteLine($"text={text}");
Console.WriteLine($"status={status}");
Console.WriteLine($"value={value}");
}
}
text ← 42, value ← 0, status ← ok
4{5 static void Main()6 {7 string text→ 42 = "42"; //@text="bad", "7"8 int value→ 0 = 0;9 string status→ ok = "ok";value ← 42
11try12{13 value→ 42 = int.Parse(text42);14}Console.WriteLine($"text={text}");
20 Console.WriteLine($"text={text42}");21 Console.WriteLine($"status={statusok}");22 Console.WriteLine($"value={value42}");23}outputtext=42 status=ok value=42
text ← bad, value ← 0, status ← ok
4{5 static void Main()6 {7 string text→ bad = "bad";8 int value→ 0 = 0;9 string status→ ok = "ok";try
11try12{13 value = int.Parse(textbad);14}status ← invalid
14}15catch (FormatException)16{17 status→ invalid = "invalid";18}Console.WriteLine($"text={text}");
20 Console.WriteLine($"text={textbad}");21 Console.WriteLine($"status={statusinvalid}");22 Console.WriteLine($"value={value0}");23}outputtext=bad status=invalid value=0
text ← 7, value ← 0, status ← ok
4{5 static void Main()6 {7 string text→ 7 = "7";8 int value→ 0 = 0;9 string status→ ok = "ok";value ← 7
11try12{13 value→ 7 = int.Parse(text7);14}Console.WriteLine($"text={text}");
20 Console.WriteLine($"text={text7}");21 Console.WriteLine($"status={statusok}");22 Console.WriteLine($"value={value7}");23}outputtext=7 status=ok value=7