當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js proces 'unhandledRejection'事件用法及代碼示例


事件:'unhandledRejection'

曆史
版本變化
v7.0.0

不處理 Promise 拒絕已被棄用。

v6.6.0

未處理的Promise 拒絕現在將發出進程警告。

v1.4.1

添加於:v1.4.1


參數

每當 Promise 被拒絕並且在事件循環的一個輪次中沒有錯誤處理程序附加到 Promise 時,就會發出 'unhandledRejection' 事件。使用 Promises 進行編程時,異常被封裝為 "rejected promises"。可以使用 promise.catch() 捕獲和處理拒絕,並通過Promise 鏈傳播。 'unhandledRejection' 事件對於檢測和跟蹤被拒絕但尚未處理的承諾很有用。

import process from 'node:process';

process.on('unhandledRejection', (reason, promise) => {
  console.log('Unhandled Rejection at:', promise, 'reason:', reason);
  // Application specific logging, throwing an error, or other logic here
});

somePromise.then((res) => {
  return reportToUser(JSON.pasre(res)); // Note the typo (`pasre`)
}); // No `.catch()` or `.then()`const process = require('node:process');

process.on('unhandledRejection', (reason, promise) => {
  console.log('Unhandled Rejection at:', promise, 'reason:', reason);
  // Application specific logging, throwing an error, or other logic here
});

somePromise.then((res) => {
  return reportToUser(JSON.pasre(res)); // Note the typo (`pasre`)
}); // No `.catch()` or `.then()`

以下也將觸發 'unhandledRejection' 事件被發出:

import process from 'node:process';

function SomeResource() {
  // Initially set the loaded status to a rejected promise
  this.loaded = Promise.reject(new Error('Resource not yet loaded!'));
}

const resource = new SomeResource();
// no .catch or .then on resource.loaded for at least a turnconst process = require('node:process');

function SomeResource() {
  // Initially set the loaded status to a rejected promise
  this.loaded = Promise.reject(new Error('Resource not yet loaded!'));
}

const resource = new SomeResource();
// no .catch or .then on resource.loaded for at least a turn

在此示例情況下,可以將拒絕作為開發人員錯誤進行跟蹤,這通常是其他 'unhandledRejection' 事件的情況。為了解決此類故障,可以將非操作 .catch(() => { }) 處理程序附加到 resource.loaded ,這將阻止發出 'unhandledRejection' 事件。

相關用法


注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品  'unhandledRejection'事件。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。