0%

自定义抛出错误


使用抛出异常机制能让代码结构更加的简洁,减少很多的逻辑判断,并且能够得到出错时的详细错误信息,今天要说的就是在js中抛出(throw)异常。

报错的类别

一、引用报错 (ReferenceError)

1
console.log(a)

二、 类型错误 (TypeError)

1
2
var a = {};
a.speak();

三、 语法错误 SyntaxError)

1
10.speak()

四、 范围错误—非法数组长度(RangeError)

1
var a = new Array(-1);

抛出错误的方法

常见的几种抛出错误的方法

  1. console.error(‘第一个错误’);

  2. $.Error();

  3. 可以定义抛出错误的类型:

1
2
3
throw new Error('第三个错误');
throw new ReferenceError('第三个错误');
throw new TypeError('第三个错误');

自定义抛出

错误类型是可以自定义的(注意的是:Error类型不可以直接继承)

下面是自定义错误的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function RangeError(msg){
var err = new Error(msg);

//错误的行号
this.lineNumber = err.lineNumber;
//错误的列号
this.columnNumber = err.columnNumber;
//错误的文件
this.fileName = err.fileName;
//错误的类型
this.name = 'RangeError';
//错误的消息
this.message = err.message;
//错误的栈信息
this.stack = err.stack;

}
RangeError.prototype = Object.create(Error.prototype);
RangeError.prototype.constructor = RangeError;


throw new RangeError('自定义错误');

传统的捕获错误的方法

1
2
3
4
5
try{

}catch(e){
//TODO 这里的TODO是一个记事本,可以在行数中看到记录的内容
}

全局监听错误信息

window.onerror 当全局代码中出现错误时触发

1
2
3
4
5
6
7
//一共有五个参数:错误类型,错误文件,行号,列号,错误堆栈信息

window.onerror = function(name,filename,lineNumber,columuNumber,stack){
console.log(arguments)

return true;//通过 return true;可以不再控制台显示错误提示
}

以上就是我对自定义抛出错误的一些理解,不足之处希望大牛们多提一些意见,感激不尽

-------------本文结束感谢您的阅读-------------
没办法,总要恰饭的嘛~~