| |
| |
| |
| # performCtrlWithExceptionHandling function |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| void performCtrlWithExceptionHandling |
| (String name, dynamic ctrl, String type, void additionalErrorListener(Object error, StackTrace stackTrace), void work()) |
| |
| |
| |
| <p>Wraps work with common try/catch behaviour and timeline events.</p> |
| |
| |
| |
| ## Implementation |
| |
| ```dart |
| void performCtrlWithExceptionHandling( |
| String name, |
| dynamic ctrl, |
| String type, |
| void Function(Object error, StackTrace? stackTrace) additionalErrorListener, |
| void Function() work) { |
| try { |
| Timeline.startSync(name); |
| work(); |
| } catch (_e, _st) { |
| ctrl.proxyError(FidlError('Exception handling $type $name: $_e')); |
| additionalErrorListener(_e, _st); |
| rethrow; |
| } finally { |
| Timeline.finishSync(); |
| } |
| } |
| ``` |
| |
| |
| |
| |
| |
| |
| |