Rufen Sie die Standortinformationen von PromiseRejectionEvent ab
P粉447785031
P粉447785031 2024-02-17 18:06:26
0
1
467

Ich habe einen Code, in dem async 函数可能会抛出错误,我正在使用 unhandledrejection 事件处理它们,因为那些未捕获的 throw 不会触发 error 事件,因为它们发生在 Promise 内。因此,我的错误处理程序正在获取 PromiseRejectionEvent 而不是 ErrorEvent.

Soweit so gut, die Fehlerbehandlung funktioniert einwandfrei.

Aber Ich habe hier ein kleines Problem und das ist, dass das PromiseRejectionEvent 事件缺少位置信息,与 ErrorEvent Ereignis anders ist und es sehr nützlich wäre, den Ort in den Code einzufügen, der den Fehler auslöst.

Wenn der Code nicht verwendet async 函数,并且处理程序获取 ErrorEvent 事件时,需要使用 event.filenameevent.linenoevent.colno, diese cphpcn-Aktivitäten jedoch in PromiseRejectionEventphpcnend fehlen.

SO Meine Frage ist: Kann ich ein PromiseRejectionEvent 并重新分派它,以便最终我有一个带有位置信息的 ErrorEventPromiseRejectionEvent auf irgendeine Weise verpacken und erneut versenden, sodass ich schließlich ein

ErrorEvent mit Standortinformationen habe?

Ich habe so etwas versucht:

bigFunctionWithAllTheCodeIncludingAsyncFunctions()
.catch(error => {
    const errorEvent = new ErrorEvent('unhandledrejection', {
            'error': error,
    });
    window.dispatchEvent(errorEvent);
});
ErrorEvent 以及相关的错误信息但是所有位置信息都是无用的(0Der obige Code generiert ein korrektes

ErrorEvent und eine zugehörige Fehlermeldung

, aber

alle Standortinformationen sind nutzlos (

0 steht für Zeile und Spalte, '' steht für den Dateinamen).

🎜Übrigens habe ich überprüft, ob der Stack-Trace im unhandledrejection-Ereignishandler abgerufen wird, aber derzeit kann ich das Promise nicht mit einer benutzerdefinierten Klasse in meinen Code einbinden. 🎜 🎜Vielen Dank im Voraus :)🎜
P粉447785031
P粉447785031

Antworte allen(1)
P粉835428659

是的!但不能通过自己构建和调度 ErrorEvent 来实现。相反,您可以使用 reportError

window.onunhandledrejection = event => {
  reportError(event.reason);
};

window.onerror = (...args) => {
  console.log('onerror', args);
};

(async function() { throw new Error("oops"); }());
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!