js内置异常类
1. ReferenceError:引用异常
一般是使用了未定义的变量
2. SyntaxError:语法异常
一般是指代码写错
3. TypeErorr:类型异常
一般是指数据类型错误。比如参数类型不对
4. RangeError:范围异常
错误的数组下标
5. URIError:地址异常
在处理非法地址时出错,比如利用decodeURICompoent()来处理地址,地址中时不允许有%,有则报URIError
6. evalError(淘汰):错误使用eval函数时会报错
异常处理
try
catch
finally语句是可选的,在try语句执行完成后,无论有没有出错,finally都会执行。
一般对局部代码使用。
一般执行顺序 try - catch - finally
const grade = Math.random() * 100;
try {
if (grade == 0) {
throw new Error('自定义类名')//错误的名称
}
} catch (error) {
console.dir(error)
} finally {
}
自定义异常处理
//es5
function err(message) {
// this.message = message;
this.message = message;
this.name = '自定义类名';
}
err.prototype = new Error();
//es6
class err1 extends Error {
constructor(message) {
super(message);
this.name = '自定义类名';
}
}
异常对象的常见名称
name 名称
message 信息
stack:异常方法栈,产生错误的地方
主动抛出异常
当程序执行到需要进行严格判断时,一般当布满足条件时,可以选择主动抛出异常
比如考0分,主动观察问题。
const grade = Math.random() * 100;
try {
if (grade == 0) {
throw new Error('自定义类名')//错误的名称
}
} catch (error) {
console.dir(error)
} finally {
}
return在异常中的表现
无异常时,如果return在try里,会先保存要返回的数据,
再去执行finally(如果有),执行之后就返回。
有异常时,返回的时catch里的return。
无论是否有异常,只要finally有return,那么执行的时finally里的return