-
Notifications
You must be signed in to change notification settings - Fork 373
Description
There are several issues where users were confused by the the "Break on all exceptions" option when an exception is thrown in core library code and handled in core library code, e.g.
dart-lang/sdk#52615
dart-lang/sdk#52423
I proposed that, by default, if an exception is thrown in code that is not debuggable and will be caught in code that is not debuggable, then the debugger will not break even if "Break on all exceptions" is enabled.
For example:
part of dart.core
void _foo() {
throw Exception('foo');
}
void bar() {
try {
_foo();
} on Exception {};
}Calling bar should not cause the debugger to break on throw Exception('foo'); because the exception is both throw and caught in undebuggable code i.e. it is just an implementation detail of bar.
Another example:
part of dart.core
void _foo() {
throw Exception('foo');
}
void bar() {
_foo();
}
// User code:
void main() {
try {
bar();
} on Exception {}
}Calling bar should cause the debugger to break on throw Exception('foo'); because the exception is caught in debuggable code.
This UX will require VM changes.