Tired to try/catch? orElse ❤ Dart

Andrew Chen
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 default
final 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

--

--

No responses yet