【JS基础】错误信息类型、异常处理

错误信息类型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!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值