Result class like many other but this one can return void type too, and does not need a "Unit" type
Features
- Prevent app crashes
Usage
Wrap a function that can throw an error:
Result.of(
() {
final n = Random().nextInt(10);
if (n < 5) {
throw RangeError(n);
}
return n;
},
error: (e, s) => e.toString(),
);
Or wrap a future that can throw an error:
Result.ofFuture(
functionThatCanThrowError(),
error: (e, s) => e.toString(),
);
Or catch error manually
Future<int> functionThatCanThrowError() async {
final n = Random().nextInt(10);
if (n < 5) {
throw RangeError(n);
}
return n;
}
Future<Result<int, String>> functionThatDoesNotThrow() async {
try {
return Result.ok(await functionThatCanThrowError());
} catch (e, s) {
return Result.err(e.toString() + s.toString());
}
}
void main() async {
final result = await functionThatDoesNotThrow();
if (result.isError) {
return print('Error');
}
return print(result.value);
}
Libraries
- res
- Result class library