JavaScript异常处理

JavaScript异常处理

一:异常处理
【错误类型】
Error(错误)表示系统级的错误和程序不必处理的异常,是 JavaScript 运行环境中的内部错误或者硬件问题,比如,内存资源不足等。对于这种错误,程序基本无能为力,除了退出运行外别无选择。
  • 系统错误
  • 程序错误
  • 用户错用
【异常】
所谓异常,表示需要捕捉或者需要程序进行处理的地方,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。
【error对象】

创建错误

let err = new Error();

Error属性

console.log(err.name);
console.log(err.message);
console.log(err.stack);
【error类型】
  • EvalError eval方法引起的错误

  • RangeError 超出范围引发的错误

  • ReferenceError 引用不存在的变量引发错误

    let obj = null;
    //引发引用不存在的错误  ReferenceError: acc is not defined
    console.log(acc.toString());
    
  • SyntaxError 语法错误

    let obj = null;
    //语法错误  SyntaxError: Unexpected end of input
    let a=
    
  • TypeError 变量中保存了意外的类型引发的错误

    let obj = null;
    // 引发类型错误  TypeError: Cannot read property 'toString' of null
    console.log(obj.toString());
    
  • URIError 执行URI相关函数的参数不正确引发的错误

【异常的抛出和捕获】
  1. 抛出异常
    • throw
  2. 捕获异常
    • try 可能会引发异常的代码块
    • catch 处理异常的代码块
    • finally 无论有没有异常都会执行的代码块
【通过try-catch-finally处理错误】
 * try块用来尝试运行可能出现错误的代码
 * 如果try块中的代码出现错误,那么程序会执行catch中的代码
 * 如果try块中的代码没有错误,那么程序会将try块中的代码执行完
 * finally块是可选的代码块,它表示无论如何都会执行的代码块,一般来讲把他用来关闭各种链接或清理操作
 * throw表示抛出异常,可以将捕获的异常跑到外面的方法继续处理
try{
    // let a = 1;
    console.log(a);
}catch(err){
    console.log(`错误:${err.name},${err.message}`);
}finally{   //无论如何都要执行
    console.log(`执行finally`);
}

console.log(`你好`);
let func = ()=>{
    try{
        // let a = 1;
        console.log(a);
        return;
    }catch(err){
        console.log(`错误:${err.name},${err.message}`);
        throw err;   //抛出异常,就会显示出错误
        // return;
    }finally{   //无论如何都要执行
        console.log(`执行finally`);
        //return;
    }
    
    console.log(`你好`);
}
func();
console.log(`结束运行`);

//当三个return都打开时,执行的结果是
/*错误:ReferenceError,a is not defined
执行finally
结束运行*/
【警告】
如果代码中一个错误不足以导致程序崩溃,就会发出一条警告(warning)。也就是说,程序在产生一条警告后,会继续向下运行。这听起来感觉挺不错的,但是有些时候也有问题,那是因为产生警告的问题会导致程序不按照我们预期的效果来继续执行。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值