簡體   English   中英

Deno:如何處理異常

[英]Deno: How to handle exceptions

在 nodejs 中,我們可以處理這樣的異常:

process.on('uncaughtException', (err, origin) => {
  fs.writeSync(
    process.stderr.fd,
    `Caught exception: ${err}\n` +
    `Exception origin: ${origin}`
  );
});

setTimeout(() => {
  console.log('This will still run.');
}, 500);

// Intentionally cause an exception, but don't catch it.
nonexistentFunc();
console.log('This will not run.');

deno 的替代方案是什么? 我知道有window.onunload ,但它不處理錯誤

Deno 總是死於未捕獲的異常,這是一個設計選擇(實際上是一個核心選​​擇)。 您不能為您的錯誤放置全局處理程序,因為有時您的異常可能是不可恢復的,並且可能會導致改變應用程序整體狀態的副作用,總而言之,未處理的異常處理程序意味着問題。 到目前為止,NodeJS 不鼓勵對異常進行全局處理,因此請不要在將來在該平台上依賴此類代碼。

話雖如此,如何處理拒絕? try / catch / finally同步代碼。 .then / .catch / .finally對於異步代碼。

編輯:您可以使用的一個有趣的資源是unhandledRejection事件,它是一個用於實現各種清理的事件,意味着關閉打開的連接、釋放資源、關閉文件等。這不會阻止異常終止程序,但會給您空間以防止對程序終止產生二次影響。

https://developer.mozilla.org/en-US/docs/Web/API/Window/unhandledrejection_event

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM