File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change 1+ /*
2+ Copyright 2023 The Matrix.org Foundation C.I.C.
3+
4+ Licensed under the Apache License, Version 2.0 (the "License");
5+ you may not use this file except in compliance with the License.
6+ You may obtain a copy of the License at
7+
8+ http://www.apache.org/licenses/LICENSE-2.0
9+
10+ Unless required by applicable law or agreed to in writing, software
11+ distributed under the License is distributed on an "AS IS" BASIS,
12+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+ See the License for the specific language governing permissions and
14+ limitations under the License.
15+ */
16+
17+ import { ObservableValue , BaseObservableValue } from "../observable/ObservableValue" ;
18+
19+ export class ErrorBoundary {
20+ constructor ( private readonly errorCallback : ( Error ) => void ) { }
21+
22+ try < T > ( callback : ( ) => T ) : T | undefined ;
23+ try < T > ( callback : ( ) => Promise < T > ) : Promise < T | undefined > | undefined {
24+ try {
25+ let result : T | Promise < T | undefined > = callback ( ) ;
26+ if ( result instanceof Promise ) {
27+ result = result . catch ( err => {
28+ this . errorCallback ( err ) ;
29+ return undefined ;
30+ } ) ;
31+ }
32+ return result ;
33+ } catch ( err ) {
34+ this . errorCallback ( err ) ;
35+ return undefined ;
36+ }
37+ }
38+ }
You can’t perform that action at this time.
0 commit comments