如何管理 JavaScript 中的 "uncaught exceptions" 以便在用户界面中显示错误消息?
How to manage "uncaught exceptions" in JavaScript in order to show the error message in the user interface?
当某些网站或 Web 应用程序抛出未捕获的异常时,每个浏览器的 Develper 工具中都会出现错误
例如,在Electron中,如果一个未捕获的异常,开发者可以设置一个侦听器并根据错误信息做任何我想做的事情:
process.on('uncaughtException', function (error) {
// Handle the error
}
所以,我想知道在 JavaScript 中是否有一种简单的方法可以做到这一点。这可能有助于记录和存储用户工作时的常见错误,或者为了向用户显示发生的事情,用户可以向开发人员发送反馈。
可以改为显示类似的内容
有时,如果发生错误,应用程序会处于不稳定状态,一切都被冻结,用户不知道为什么。我认为告知错误很重要。
我找到了这个 Error JavaScript 对象。可以手动抛出,但只能在使用try
和catch
时使用,不能用于未捕获的异常,开发人员犯了一些错误。
try {
// YOUR CODE GOES HERE
} catch (e) {
if ( e instanceof CustomExceptionError ) {
// ...
} else if ( e instanceof OtherExceptionError ) {
// ...
} else {
// ...
}
//OR CALL THE ALERT BOX OR ANY OTHER UI CHANGE
}
您可以将其作为 window 对象上的事件侦听器来处理。
window.onunhandledrejection = event => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
};
window.onerror = function(message, source, lineNumber, colno, error) {
console.warn(`UNHANDLED ERROR: ${error.stack}`);
};
或者也像这样:
window.addEventListener('error', function(event) { ... })
您可以在 MDN web docs here and the onerror
event on the docs here
上阅读有关 unhandledrejection
活动的更多信息
当某些网站或 Web 应用程序抛出未捕获的异常时,每个浏览器的 Develper 工具中都会出现错误
例如,在Electron中,如果一个未捕获的异常,开发者可以设置一个侦听器并根据错误信息做任何我想做的事情:
process.on('uncaughtException', function (error) {
// Handle the error
}
所以,我想知道在 JavaScript 中是否有一种简单的方法可以做到这一点。这可能有助于记录和存储用户工作时的常见错误,或者为了向用户显示发生的事情,用户可以向开发人员发送反馈。
可以改为显示类似的内容
有时,如果发生错误,应用程序会处于不稳定状态,一切都被冻结,用户不知道为什么。我认为告知错误很重要。
我找到了这个 Error JavaScript 对象。可以手动抛出,但只能在使用try
和catch
时使用,不能用于未捕获的异常,开发人员犯了一些错误。
try {
// YOUR CODE GOES HERE
} catch (e) {
if ( e instanceof CustomExceptionError ) {
// ...
} else if ( e instanceof OtherExceptionError ) {
// ...
} else {
// ...
}
//OR CALL THE ALERT BOX OR ANY OTHER UI CHANGE
}
您可以将其作为 window 对象上的事件侦听器来处理。
window.onunhandledrejection = event => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
};
window.onerror = function(message, source, lineNumber, colno, error) {
console.warn(`UNHANDLED ERROR: ${error.stack}`);
};
或者也像这样:
window.addEventListener('error', function(event) { ... })
您可以在 MDN web docs here and the onerror
event on the docs here
unhandledrejection
活动的更多信息