国产探花免费观看_亚洲丰满少妇自慰呻吟_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()})
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桃源县| 襄城县| 东宁县| 酒泉市| 浦东新区| 申扎县| 乌什县| 禹州市| 瑞金市| 高邮市| 天峨县| 天长市| 峨眉山市| 平遥县| 长丰县| 鹿邑县| 鹤山市| 天水市| 轮台县| 侯马市| 竹山县| 雷州市| 神池县| 弥勒县| 土默特右旗| 大悟县| 东乡族自治县| 宁波市| 达州市| 金乡县| 彝良县| 将乐县| 东兴市| 图木舒克市| 宣汉县| 台中市| 昌平区| 湖北省| 营口市| 老河口市| 忻城县|