throw_in_finally
Avoid throw
in finally block.
This rule is available as of Dart 2.0.0.
Details
AVOID throwing exceptions in finally blocks.
Throwing exceptions in finally blocks will inevitably cause unexpected behavior that is hard to debug.
BAD:
class BadThrow {
double nonCompliantMethod() {
try {
print('hello world! ${1 / 0}');
} catch (e) {
print(e);
} finally {
throw 'Find the hidden error :P'; // LINT
}
}
}
GOOD:
class Ok {
double compliantMethod() {
var i = 5;
try {
i = 1 / 0;
} catch (e) {
print(e); // OK
}
return i;
}
}
Usage
To enable the throw_in_finally
rule,
add throw_in_finally
under linter > rules in your
analysis_options.yaml
file:
linter:
rules:
- throw_in_finally