Exceptions and Defensive Coding
TryParse
TryParse-style methods report success or failure without throwing.
TryParse
`TryParse` returns a boolean and writes the parsed value through an out parameter.
TryParse
TryParseExample.cs
Replay: real traced execution (multi-file project)
using System;
class Program
{
static void Main()
{
string input = "18";
bool parsed = int.TryParse(input, out int value);
string status = parsed ? "ok" : "fallback";
if (!parsed)
{
value = -1;
}
Console.WriteLine($"input={input}");
Console.WriteLine($"status={status}");
Console.WriteLine($"value={value}");
}
}
using System;
class Program
{
static void Main()
{
string input = "oops";
bool parsed = int.TryParse(input, out int value);
string status = parsed ? "ok" : "fallback";
if (!parsed)
{
value = -1;
}
Console.WriteLine($"input={input}");
Console.WriteLine($"status={status}");
Console.WriteLine($"value={value}");
}
}
using System;
class Program
{
static void Main()
{
string input = "5";
bool parsed = int.TryParse(input, out int value);
string status = parsed ? "ok" : "fallback";
if (!parsed)
{
value = -1;
}
Console.WriteLine($"input={input}");
Console.WriteLine($"status={status}");
Console.WriteLine($"value={value}");
}
}
input ← 18, parsed ← True, status ← ok
4{5 static void Main()6 {7 string input→ 18 = "18"; //@input="oops", "5"8 bool parsed→ True = int.TryParse(input18, out int value);9 string status→ ok = parsedTrue ? "ok" : "fallback";1011 if (!parsed)12 {13 value = -1;14 }1516 Console.WriteLine($"input={input18}");17 Console.WriteLine($"status={statusok}");18 Console.WriteLine($"value={value18}");19 }outputinput=18 status=ok value=18
input ← oops, parsed ← False, status ← fallback
4{5 static void Main()6 {7 string input→ oops = "oops";8 bool parsed→ False = int.TryParse(inputoops, out int value);9 string status→ fallback = parsedFalse ? "ok" : "fallback";value ← -1
11if (!parsedFalse)12{13 value→ -1 = -1;14}Console.WriteLine($"input={input}");
16 Console.WriteLine($"input={inputoops}");17 Console.WriteLine($"status={statusfallback}");18 Console.WriteLine($"value={value-1}");19}outputinput=oops status=fallback value=-1
input ← 5, parsed ← True, status ← ok
4{5 static void Main()6 {7 string input→ 5 = "5";8 bool parsed→ True = int.TryParse(input5, out int value);9 string status→ ok = parsedTrue ? "ok" : "fallback";1011 if (!parsed)12 {13 value = -1;14 }1516 Console.WriteLine($"input={input5}");17 Console.WriteLine($"status={statusok}");18 Console.WriteLine($"value={value5}");19 }outputinput=5 status=ok value=5