09-错误

nobility 发布于 2022-12-08 01-ES5 620 次阅读


错误

所有错误对象都是Error对象的子对象,可以使用这些构造函数创建一个错误对象,构造函数接收一个字符串参数,表示出错信息

  • Error. Prototype. Message:出错信息
  • Error. Prototype. Name:错误名称,也就是构造函数名
  • Error. Prototype. Stack:错误堆栈信息

原生错误类型

对象名 中文名 描述
SyntaxError 语法错误 变量名不合法、关键字使用位置不合法等
ReferenceError 引用错误 使用不存在的变量、赋值语句左部不是变量
RangeError 范围错误 定义数组长度为负数或超过数组最大的容纳范围
TypeError 类型错误 new一个非构造函数、使用未定义的函数
URLError URL 错误 URL函数传递的参数是非URL地址时

Throw 抛出错误

若为捕获的情况下,程序遇到该语句就会停止运行将该关键字后的错误抛出,该关键字不仅仅可以抛出错误对象,还可以抛出任意数据类型

Throw new Error ("err");
//Error: err
Throw 1;	//其他不列举了
//1

捕获错误

try... Catch结构:若 try 中发生错误,生成的错误对象会被 catch 语句捕获,后面的代码还会执行,要注意的是每个try只能有一个catch语句块

Try {
    Throw new Error ("err");
} catch (e) {
    Console.Error (e);
}
Console.Log ("后面的代码");
//Error: err
//后面的代码

try... Catch... Finally结构:不管有没有发生错误,finally 语句块中的代码总会执行,要注意的是finally不能单独使用,必须配合try可以没有catch,每个try只能有一个finally语句块

Try {
    Throw new Error ("err");
} catch (e) {
    Console.Error (e);
} finally{
    Console.Log ("filally 中的代码");
}
Console.Log ("后面的代码");
//Error: err
//filally 中的代码
//后面的代码


Try {
    
} catch (e) {
    Console.Error (e);
} finally{
    Console.Log ("filally 中的代码");
}
Console.Log ("后面的代码");
//filally 中的代码
//后面的代码


Try {
    
} finally{
    Console.Log ("filally 中的代码");
}
Console.Log ("后面的代码");
//filally 中的代码
//后面的代码

自定义错误

继承 Error 对象即可

Function UserError (message) {
    This. Message = message;
    This. Name = UserError. Name;
}
UserError. Prototype = new Error ();
UserError. Prototype. Constructor = UserError;
  

Console.Log (new UserError ("自定义的错误"));
Console.Log (new Error ("原生错误"));

Console.Log (new UserError () instanceof Error ); //true
加油啊!即便没有转生到异世界,也要拿出真本事!!!\(`Δ’)/
最后更新于 2022-12-08