try-catch 语句:作用捕获异常语句,以及常见的错误

try-catch 语句:作用捕获异常语句

执行流程:
先执行try中的语句,如果有错误,就会将错误抛出,并且被catch捕获并去执行
这时候就会执行catch里的语句,而且不论try中有没有抛出和错误,finally语句都会去执行其中自己的代码块

我们来看下常见的一些错误:

 console.log(a);//Uncaught ReferenceError(引用错误): a is not defined
   
 var b = 'hello'
 b();//Uncaught TypeError(类型错误): b is not a function

我们来看下try-catch的用法:

  try {
    
         console.log(a);
        } catch {
    
    
            /  一旦代码出错,自动执行catch语句, 
            console.log('代码出错了');
        }

注意: !!!!!!!!! 如果不需要输出错误信息,catch 后不需要()

如果需要输出错误信息,对错误进行处理; catch 需要() 并且需要传入一个参数err (就是错误信息,这里用err语义化,可以用a);

   try {
    
    
        console.log(a);
    } catch (err) {
    
    
        //  捕获 err 就是错误信息,
        console.log(err);
    }

在这里插入图片描述
我们看到这个输出结果和下面这样的信息相同
在这里插入图片描述
finally 不管代码是否出错,都会执行
先来看不出错的情况

 try {
    
    
            console.log(1);
     } catch (err) {
    
    
            console.log(err);
     } finally {
    
    
            //   finally此处的代码始终都会执行
            console.log('代码执行了');
     }

在这里插入图片描述
再来看下出错的情况

 try {
    
    
            console.log(a);
     } catch (err) {
    
    
            console.log(err);
     } finally {
    
    
            //   finally此处的代码始终都会执行
            console.log('代码执行了');
     }

finally此处的代码始终都会执行
在这里插入图片描述

js的错误类型:

  • 1.SyntaxError(语法错误)

  • 2.ReferenceError(引用错误)

  • 3.RangeError(范围错误)

  • 4.TypeError(类型错误)

  • 5.URLError(URL错误)

  • 6.EvalError(eval错误)

    1. Error(错误)

其中,Error是基类型,其他错误类型都继承自该类型。因此,所有错误类型共享了一组相同的属性。Error类型的错误很少见,如果有也是浏览器抛出的;这个基类型的主要目的是供开发人员抛出自定义错误

【EvalError(eval错误)】

eval函数没有被正确执行时,会抛出EvalError错误。该错误类型已经不再在ES5中出现了,只是为了保证与以前代码兼容,才继续保留

【RangeError(范围错误)】

RangeError类型的错误会在一个值超出相应范围时触发,主要包括超出数组长度范围以及超出数字取值范围等

new Array(-1); //Uncaught RangeError: Invalid array length

【ReferenceError(引用错误)】

引用一个不存在的变量或左值(lvalue)类型错误时,会触发ReferenceError(引用错误)

 console.log(a);//Uncaught ReferenceError(引用错误): a is not defined

【SyntaxError(语法错误)】

当不符合语法规则时,会抛出SyntaxError(语法错误)

【TypeError(类型错误)】

在变量中保存着意外的类型时,或者在访问不存在的方法时,都会导致TypeError类型错误。错误的原因虽然多种多样,但归根结底还是由于在执行特定类型的操作时,变量的类型并不符合要求所致

 var b = 'hello'
 b();//Uncaught TypeError(类型错误): b is not a function

【URIError(URI错误)】

URIError是URI相关函数的参数不正确时抛出的错误,主要涉及encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()这六个函数

 decodeURI('%2'); // URIError: URI malformed

猜你喜欢

转载自blog.csdn.net/z18237613052/article/details/114854893