プロキシハンドラ内でReflect.get(target, name, receiver)
によって非同期的にスローされるエラーをキャッチするにはどうすればよいですか?非同期プロキシ/リフレクトトラップでエラーをキャッチする方法
私は、任意のネットワークの例外をキャッチし、優雅にユーザーにエラーメッセージを表示することができるように、APIクラスをラップするProxyとReflectを使用しています。 ()決して "エラーをキャッチしていない" Reflect.getの内側にエラーがスローされ
//User.js class User { /** * List all users */ all() { return new Promise((resolve, reject) => { reject(new Error('Network error')); }); } }
//App.js import Wrapper from './Wrapper'; Wrapper.asyncFunction(); //throws uncaught Error
//API.js class API { get user() { return new User() } }
//Wrapper.js let handler = { get: (target, name, receiver) => { try { Reflect.get(target, name, receiver); //throws Error asynchronously } catch (e) { console.log('caught error', e); } }; export default new Proxy(new API(), handler);は、印刷され、キャッチされないままにされます。
約束以内意味する「非同期的にスローされますか」? 'Reflect.get(...)'の戻り値に 'catch'ハンドラを付けることができます。 – sdgluck
"非同期にスローする"ことはできません。あなたがすることができるのは、「拒否される約束を返す」ことだけです。 – Bergi