JavaScript的错误与异常

错误与异常是什么

错误,指程序中的非正常运行状态,在其它编程语言中称为“异常”或“错误”。解释器会为每个错误情形创建并抛出一个Error对象, 其中包含错误的描述信息。
通过使用、JavaScript提供的异常处理语句,可以用结构化的方式来捕捉发生的错误,让异常处理代码与核心业务代码实现分离。
错误与异常处理在应用中的重要性是毋庸置疑的。任何有影响力的Web应用都需要一套完善的错误处理机制。

try…catch语句

try…catch语句

try…catch语句作为JavaScript中处理异常的一种标准方式。try语句标记一块待尝试的语句,如果该语句出现错误,则通过catch语句进行捕获。

try{
	//可能会导致错误的代码
}catch(error){
	//在错误发生时的处理
}

捕捉块

可以使用捕捉块来处理所有可能在try代码中产生的异常。

catch(catchID){
	statements
}
  • 捕捉块指定了一个标识符(上述语句中的catchID)来存
  • 放抛出语句指定的值。
  • 可以用这个标识符来获取抛出的异常信息。

实例:

try{  //  用于捕获指定语句块中的 错误或异常
    console.log(v); //调用未定义变量   ->  报错
}
catch (e){   //  用于处理try语句中出现的错误
    console.log(e);   //e - 表示try语句中出现错误的信息   
}
// try语句就是把语法报错的内容改成了提示
// 原因是为了不让用户看到软件的缺漏

终结块

终结块包含了在try和catch完成后、下面接着的语句之前执行的语句。终结块无论是否抛出异常都会执行。如果抛出了一个异常,就算没有异常处理,终结块李的语句也会执行。

 try{
 	console.log(0);
 }catch(error){
 	console.log(1);
 }finally{
 	console.log(3);
 }

嵌套try…catch语句

可以嵌套一个或多个try…catch语句。如果一个内部的try…catch语句没有捕捉块,将会启动匹配外部的try…catch语句的捕捉块。

try{
	console.log(0);
}catch(error){
	try{
		console.log(1);
	}catch(error){
		console.log(2);
	}
}

总结:

try 语句允许我们定义在执行时进行错误测试的代码块。

catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。

JavaScript 语句 trycatch 是成对出现的。

语法

try {
		...    //异常的抛出 
} catch(e) {
		...    //异常的捕获与处理 
} finally {
		...    //结束处理 
}

错误类型

基本错误类型

执行代码期间可能发生的错误有多种类型,每种错误都有对应的错误类型。当错误发生时,就会抛出对应类型的错误对象。

Error是基本错误对象类型,其他错误类型都继承自该类型。Error类型的错误很少见,如果有也是浏览器抛出的。这个基本错误类型的主要目的是提供给开发人员抛出自定义错误的。

预定义错误类型

除基本错误以外,JavaScript提供的其他七种错误类型:(了解即可)

错误类型说明
EvalError表示错误的原因:与eval()有关。
InternalError.表示JavaScript引擎内部错误的异常。
RangeError表示错误的原因:数值变量或参数超出其有效范围。
ReferenceError.表示错误的原因:无效引用。
SyntaxError表示错误的原因: eval()在 解析代码的过程中发生的语法错误。
TypeError表示错误的原因:变量或参数不属于有效类型。
URIError表示错误的原因:给encodeURI()或decodeURI()传递的参数无效。

抛出语句

throw语句

使用throw语句抛出一个异常,当抛出异常,规定一个含有值的表达式要被抛出。

throw 语句允许我们创建自定义错误。

正确的技术术语是:创建或抛出异常(exception)。

如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。

语法:
throw exception;

异常可以是 JavaScript 字符串、数字、逻辑值或对象。

异常可以是 JavaScript 字符串、数字、逻辑值或对象。

实例:
function fn(v) {
    if (v) {
        return v;
    }else{

        throw 'undefined';
        /* 
          throw语句- 人为抛出错误或异常
          * 语法结构 - throw 异常或错误的表达式    
            *表达式允许是任意类型的内容
          * 作用 - 预判断当前使用的变量、函数或对象是否存在
        */
    }
}
// console.log(fn(10));
// console.log(fn());

var result;
try {
    result = fn();
}catch (e){
    result = 'unkown';
    console.log(e);
}
console.log(result);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值