Tired to try/catch? orElse ❤ Dart
1 min readJun 18, 2019
Before:
List<String> list;try {
list = getList();
} on Exception {
list = [];
}
After:
final list = or(() => getList(), orElse: () => []);
// or
final list = or(() => getList()) ?? <String>[];
Why do we need it?
final List<String> noAndrewList = ["foo", "bar"];final res = noAndrewList.firstWhere((it) => it == "Andrew"); // Exception! "Andrew" not found
final defaultRes = noAndrewList.firstWhere((it) => it == "Andrew", orElse: () => ""); // empty string as defaultfinal List<String> emptyList = [];final noElementRes = emptyList.firstWhere((it) => it == "Andrew", orElse: () => ""); // Excepion! No elementfinal orRes = or(() => noAndrewList.firstWhere((it) => it == "Andrew
)) ?? ""; // pass
final orDefaultRes = or(() => emptyList.firstWhere((it) => it == "Andrew
)) ?? ""; // pass