目录
错误信息类型Error
Error
- 通过Error构造器创建一个错误对象
- 当运行错误产生时,Error的示例对象会被抛出
- 也是用户自定义异常的基础对象
new Error([message[, fileName[,lineNumber]]])
- message可选。错误描述信息。
- fileName 可选。引起该异常的代码所在的文件的名字。默认是调用Error构造器代码所在的文件 的名字。
- lineNumber 可选。 引起该异常的代码的行号。默认是调用Error构造器代码所在的文件的行号。
SyntaxError 语法错误
参数
new SyntaxError([message[, fileName[, lineNumber]]])
throw new SyntaxError('Hello', "someFile.js", 10);
- message 消息可选. 描述此错误
- fileName 文件名 可选. 引起该异常的代码所在的文件的名字。
- lineNumber 行号 可选. 引起该异常的代码的行号。
示例
//变量名不规范
var 1=1;
// 关键字赋值
var new=1;
// 基本语法错误
var a=5:
ReferenceError 引用错误
参数
new ReferenceError ([message[, fileName[, lineNumber]]])
throw new ReferenceError ('Hello', "someFile.js", 10);
- message 消息可选. 描述此错误
- fileName 文件名 可选. 引起该异常的代码所在的文件的名字。
- lineNumber 行号 可选. 引起该异常的代码的行号。
示例
//变量或者函数未被声明
//给无法被赋值的对象赋值的时候
var a=1=2;
RangeError 范围错误
参数
new RangeError ([message[, fileName[, lineNumber]]])
throw new RangeError ('Hello', "someFile.js", 10);
- message 消息可选. 描述此错误
- fileName 文件名 可选. 引起该异常的代码所在的文件的名字。
- lineNumber 行号 可选. 引起该异常的代码的行号。
示例
// 数组长度赋值为负数的时候
var arr=[1,2,3];
arr.length=-1;
// 对象方法参数超过可行范围
TypeError 类型错误
参数
new TypeError([message[, fileName[, lineNumber]]])
throw new TypeError('Hello', "someFile.js", 10);
- message 消息可选. 描述此错误
- fileName 文件名 可选. 引起该异常的代码所在的文件的名字。
- lineNumber 行号 可选. 引起该异常的代码的行号。
示例
// 调用不存在的方法
null.f();
// 实例化初始值
InternalError
参数
new InternalError([message[, fileName[, lineNumber]]])
throw new InternalError('Hello', "someFile.js", 10);
- message 消息可选. 描述此错误
- fileName 文件名 可选. 引起该异常的代码所在的文件的名字。
- lineNumber 行号 可选. 引起该异常的代码的行号。
示例
- “too many switch cases”(过多case子句);
- “too many parentheses in regular expression”(正则表达式中括号过多);
- “array initializer too large”(数组初始化器过大);
- “too much recursion”(递归过深)。
URIError URI错误
参数
new URIError ([message[, fileName[, lineNumber]]])
throw new URIError ('Hello', "someFile.js", 10);
-
message 消息可选. 描述此错误
-
fileName 文件名 可选. 引起该异常的代码所在的文件的名字。
-
lineNumber 行号 可选. 引起该异常的代码的行号。
- URI 统一资源标识符
- URL 统一资源定位符
- URN 统一资源名称
EvalError eval函数执行错误
参数
new EvalError ([message[, fileName[, lineNumber]]])
throw new EvalError ('Hello', "someFile.js", 10);
- message 消息可选. 描述此错误
- fileName 文件名 可选. 引起该异常的代码所在的文件的名字。
- lineNumber 行号 可选. 引起该异常的代码的行号。
异常处理
- 由一个try语句和catch或finally语句或两者兼有
- try中包含需要执行的语句
- catch中包含try中抛出异常的时候需要执行的语句。如果try没有抛出异常,就会跳过catch中的语句
- finally子句在try块和catch块之后执行但是在下一个try声明之前执行。无论是否有异常抛出或捕获它总是执行。
try…catch
try{
console.log('正常执行1');
console.log(a);
console.log('正常执行2');
}catch(e){
console.log(e.name); //访问错误类型
console.log(e.message); //访问错误详细信息
console.log('catch');
}
//打印值
//正常执行1
//ReferenceError
//a is not defined
// catch
try…finally
- finally块包含在try…catch…之后
- 无论释放捕获异常finally中语句块都会执行
try {
console.log('正常执行');
console.log(a);
console.log('正常执行1');
}
finally {
console.log('finally语句');
}
//打印值
//正常执行
//finally语句
try…catch…finally
try{
console.log('正常执行');
console.log(a);
console.log('正常执行1');
}catch{
console.log('catch语句');
}finally{
console.log('finally语句');
}
//打印值
//正常执行
//catch语句
//finally语句
throw
- 抛出一个用户自定义的异常
function getRectArea(width, height) {
if (isNaN(width) || isNaN(height)) {
throw 'Parameter is not a number!';
//throw new EvalError ('Hello', "someFile.js", 10);
}
}
try {
getRectArea(3, 'A');
} catch (e) {
console.error(e);
}
//打印值
//Parameter is not a number!