JavaScript中错误处理

1 如何进行错误处理

使用try()......catch(),语法为:

try{
    
    
   // 可能出现错误的代码
}
catch(e)
   // 错误处理代码
}

catch:用来捕获错误,参数e用来捕获错误对象

错误案例演示:

var o = {
    
    };
o.func(); // 这行代码会出错,因为调用了不存在的方法
console.log("test"); // 前面的代码出错时,这行代码不会执行

在这里插入图片描述
当我们知道这行代码可能会出现问题时,就可以使用try()......catch()来进行错误处理,案例如下:

var o = {
    
    };
try {
    
     // 在try中编写可能出现错误的代码
    o.func();
    console.log("a"); // 如果前面的代码出错,这行代码不会执行
} catch (e) {
    
     // 在catch中捕获错误,e表示错误对象
    console.log(e);
}
console.log('b'); // 如果错误已经被处理,这行代码会执行

在这里插入图片描述

2 错误对象的传递

书写错误代码:

function foo1() {
    
    
    foo2(); // 调用foo2函数
    console.log("foo1");
}
function foo2() {
    
    
    var o = {
    
    };
    o.func(); // 未定义这个函数,发生错误
}
foo1();

在这里插入图片描述
将上面的代码使用try()……catch()进行错误处理后:

function foo1() {
    
    
    foo2(); // 调用foo2函数
    console.log("foo1");
}
function foo2() {
    
    
    var o = {
    
    };
    o.func(); // 调用func()函数
}
try {
    
    
    foo1(); // 调用foo1函数
} catch (e) {
    
    
    console.log("test"); // 如果错误输出test
}

结果是:test

3 抛出错误对象throw

throw语句用来抛出一个用户自定义的异常。当前函数的执行将被停止(throw之后的语句将不会执行),并且控制将被传递到调用堆栈中的第一个catch块。如果调用者函数中没有catch块,程序将会终止。

try {
    
    
    var e1 = new Error("错误信息:橘猫吃胖了");
    throw e1; // 将错误对象e1抛出
} catch (error) {
    
    
    console.log(error.message); // 输出错误信息
    console.log(error === e1); // 判断错误对象是否等于错误信息
}

在这里插入图片描述

4 错误类型

类型 说明
Error 表示普通错误,其余6种类型的错误对象都继承自该对象
EvalError 调用eval()函数错误,已经弃用,为了向后兼容,低版本还可以使用
RangeError 数值超出有效范围,如new Array(-1)
ReferenceError 引用了一个不存在的变量,如var a = 1; a + b;(变量b未定义)
SyntaxError 解析过程语法错误,如{ ; }if()var a = new;
TypeError 变量或参数不是预期类型,如调用了不存在的函数或方法
URIError 解析URI编码出错,调用encodeURI()、escape()等URI处理函数时出现

猜你喜欢

转载自blog.csdn.net/m0_46612221/article/details/124598138