美文网首页
Node.js异常处理

Node.js异常处理

作者: BlueSkyBlue | 来源:发表于2020-05-28 20:37 被阅读0次

Node.js异常分类:

  • 变量异常
  • 函数异常
  • 调用异常

变量异常

  1. 未定义变量
var c = a + b; //a,b没有定义
  1. 未包含对象
var a = {prop: 1};
console.log(a.prop2.1); //prop2位undefined,读取属性1的时候会报异常。
  1. 变量类型错误
var str = "string";
JSON.stringfy(str); //str为string类型的不是JSON类型的。

函数异常

  1. 函数未声明
  2. 函数回调异常
  3. 待回调函数同步返回
  4. 回调函数中抛出错误

调用异常

  • 对象与数组
var arr = [1, 2, 3];
var obj = {'1': '1', '2': '2', '3': '3'};

console.log(arr[4]);
console.lor(obj[4]);

var objArr = [{'test': 1},{'test': 2}];
objArr[0]['test'];
objArr[2];
objArr[2]['test'];
  • exports和module.exports
    exports只能返回一个对象。
    module.exports可以返回多种数据类型。

常见的保护逻辑

  • 变量声明
    以上面的“对象数组”的异常为例:
if(typeof objArr[2] == 'object'){
  console.log(objArr[2]['test']);
}else{
  console.log('It is not an object.');
}
  • 调用前判断
var testObject = {'test': 1};
if(typeof testObject == 'object'){
  console.log(JSON.stringfy(testObject));
}else{
  console.log('It is not an object.');
}
  • 类型判断

使用try...catch

try{
  callErr();
}catch(err){
  console.log(err);
}

function callErr(){
  var s = wrong + true;
  console.log(someSth);
}

try...catch可以保证同步情况下的异常处理,无法保证异步情况下的异常处理。例如如下代码便会抛出错误。

try{
  callErr();
}catch(err){
  console.log(err);
}

function callErr(){
  setTimeout(function(){
    var s = wrong + true;
    console.log(someSth);
  }, 10);
}

如果想保证异步执行的错误处理需要用到domain。

var domain = require('domain');
var d = domain.create();
d.on('error', function (err) {
    console.log(err);
});
function callErr(){
    setTimeout(function(){
        var s = wrong + true;
        console.log(someSth);
    }, 10);
}
d.run(function () {
    callErr();
});

domain适用于一些异步回调的处理逻辑。

相关文章

  • Node.js异常处理

    Node.js异常分类: 变量异常 函数异常 调用异常 变量异常 未定义变量 未包含对象 变量类型错误 函数异常 ...

  • Node.js错误处理一些思路

    Node.js中的错误 JavaScript的任何throw机制的使用都会引起异常,异常处理必须用try/catc...

  • Node.js中的异常处理

    记得刚刚开始学Node.js时自己尝试着写了一个简单的http服务器,跟以前接触过的php相比感觉更自由,编起码来...

  • 同步或异步异常处理

    同步或异步异常处理 同步读取异常处理 异步读取文件异常处理

  • Java 异常

    异常处理机制 异常处理模型:终止模型:当异常发生时,就进入异常处理程序,处理结束并不返回异常发生位置继续执行;恢复...

  • 第十二章:异常处理

    异常处理语法格式: try: ...处理语句 except 异常类型: ...异常处理语句 pytho...

  • Spring MVC 全局统一异常处理(注解方式)

    全局异常处理 对异常处理类增加@ControllerAdvice 增加异常处理方法,使用@ExceptionHan...

  • node.js 实战:如何优雅的处理异常

    概述 在使用异步的终极解决方案-ES7的async/await同时,如何优雅的处理错误提高代码的兼容性让作为码农的...

  • 异常处理设计文档

    一、异常处理流程说明 在ESB处理过程中,若发生异常,将进入异常流程的处理。一个异常处理流程大致如下: ESB处理...

  • Java异常处理机制

    什么是异常处理机制: 异常处理机制: 让程序发生异常时,按照代码预先设定的异常处理逻辑,针对性地处理异常,让程序尽...

网友评论

      本文标题:Node.js异常处理

      本文链接:https://www.haomeiwen.com/subject/wtczahtx.html