国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

node處理未捕獲異常

2019-11-08 02:40:37
字體:
來源:轉載
供稿:網友

nodejs最有魅力的地方就是異步編程,但異步情況下異常處理起來就比較麻煩了。

// 同步方法var sync = function(){ throw new Error("出錯了!!!")}// 異步方法var async = function(callback){ // do something PRocess.nextTick(function(){ throw new Error("出錯了!!!") callback() })}

同步方法異常處理是沒有問題的:

try { sync()}catch(err){ console.log(err.message) // 出錯了!!!}

異步方法這種方式是捕獲不到的

try { async()}catch(err){ console.log(err.message) // 不會打印內容}

方法1: 遵守nodejs潛規則,將異常從回調函數中以第一個參數傳遞出來

// 異步方法var async = function(callback){ // do something process.nextTick(function(){ var err = new Error("出錯了!!!"); callback(err) })}async(function(err){ if(err){ console.log(err.message); }else{ // do something }})

方法2: process對象提供了捕獲全局異常的方法

// 異步方法var async = function(callback){ // do something process.nextTick(function(){ throw new Error("出錯了!!!") callback() })}process.on("uncaughtException", function(err){ console.log(err.message) // 出錯了!!!})

這種方法缺點在于它在進程退出時才處理異常,我們往往需要盡早執行

方法三: 使用domain模塊創建一個子域(JS子運行環境)

var domain = require('domain').create();domain.on("error", function(err){ console.log(err.message);})domain.run(function(){ async()})
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 碌曲县| 黔东| 东乌珠穆沁旗| 靖远县| 永平县| 巨野县| 内丘县| 保德县| 太仓市| 日照市| 尤溪县| 建平县| 和田县| 长垣县| 包头市| 伊宁市| 察隅县| 大丰市| 浦县| 盐池县| 金秀| 馆陶县| 金寨县| 白水县| 遵化市| 台湾省| 吉木乃县| 根河市| 金堂县| 莱州市| 军事| 鹿邑县| 宝鸡市| 乡宁县| 淮北市| 佛冈县| 德兴市| 方正县| 汶上县| 平湖市| 阿巴嘎旗|