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


目录

    • try-catch 语句:作用捕获异常语句
    • js的错误类型:

例如acynk去请求报错了,可以打印错误,并继续代码运行
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); }

try-catch 语句(作用捕获异常语句,以及常见的错误)
文章图片

我们看到这个输出结果和下面这样的信息相同
try-catch 语句(作用捕获异常语句,以及常见的错误)
文章图片

finally 不管代码是否出错,都会执行
先来看不出错的情况
try { console.log(1); } catch (err) { console.log(err); } finally { //finally此处的代码始终都会执行 console.log('代码执行了'); }

try-catch 语句(作用捕获异常语句,以及常见的错误)
文章图片

再来看下出错的情况
try { console.log(a); } catch (err) { console.log(err); } finally { //finally此处的代码始终都会执行 console.log('代码执行了'); }

finally此处的代码始终都会执行
try-catch 语句(作用捕获异常语句,以及常见的错误)
文章图片

js的错误类型:
  • 1.SyntaxError(语法错误)
  • 2.ReferenceError(引用错误)
  • 3.RangeError(范围错误)
  • 4.TypeError(类型错误)
  • 5.URLError(URL错误)
  • 【try-catch 语句(作用捕获异常语句,以及常见的错误)】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

    推荐阅读