int.tryParse returns null instead of throwing when text is not a valid integer.

Program

Play the program to parse valid text, then select invalid input and watch the fallback path.

raw
try_parse.dart
Replay: real traced execution (multi-file project)
void main() {
  var raw = '42';
  var value = int.tryParse(raw);
  var label = value == null ? 'invalid' : 'value=$value';
  print(label);
}
void main() {
  var raw = 'oops';
  var value = int.tryParse(raw);
  var label = value == null ? 'invalid' : 'value=$value';
  print(label);
}
  1. raw ← 42

    1void main() {2  var raw = '42';3  var value = int.tryParse(raw);
    values this step42raw
  2. value ← 42

    2var raw = '42';3var value = int.tryParse(raw);4var label = value == null ? 'invalid' : 'value=$value';
    values this step42value42raw
  3. label ← value=42

    3var value = int.tryParse(raw);4var label = value == null ? 'invalid' : 'value=$value';5print(label);
    values this stepvalue=42label42value
  4. print(label);

    4  var label = value == null ? 'invalid' : 'value=$value';5  print(label);6}
    outputvalue=42
    values this stepvalue=42label
  1. raw ← oops

    1void main() {2  var raw = 'oops';3  var value = int.tryParse(raw);
    values this stepoopsraw
  2. value ← null

    2var raw = 'oops';3var value = int.tryParse(raw);4var label = value == null ? 'invalid' : 'value=$value';
    values this stepnullvalueoopsraw
  3. label ← invalid

    3var value = int.tryParse(raw);4var label = value == null ? 'invalid' : 'value=$value';5print(label);
    values this stepinvalidlabelnullvalue
  4. print(label);

    4  var label = value == null ? 'invalid' : 'value=$value';5  print(label);6}
    outputinvalid
    values this stepinvalidlabel
tryParse `int.tryParse(text)` returns `int?` instead of throwing.
nullable result `value == null` checks whether parsing failed.
fallback label The ternary expression keeps output explicit for both paths.