Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

错误对象类型 #17

Open
adodo0829 opened this issue Mar 16, 2020 · 0 comments
Open

错误对象类型 #17

adodo0829 opened this issue Mar 16, 2020 · 0 comments

Comments

@adodo0829
Copy link
Owner

Error对象

error对象是包含错误信息的对象,是javascript的原生对象。当代码解析或运行时发生错误,javascript引擎就会自动产生并抛出一个error对象的实例,然后整个程序就中断在发生错误的地方.

属性

error对象包括两个属性:message和name。

message: 错误信息
name:    错误类型

try {
  xxxx
}
catch(e){
  console.log(e.message); // xxxx is not defined 
  console.log(e.name);    // ReferenceError
}

可以使用error()构造函数来创建错误对象。如果指定message参数,则该error对象将把它用做它的message属性
throw new Error('test'); // Uncaught Error: test

类型

Error (基类)
EvalError(eval错误)
RangeError(范围错误)
ReferenceError(引用错误)
SyntaxError(语法错误)
TypeError(类型错误)
URIError(URI错误)

错误事件 onerror

加载图像失败时会显示一个警告框。发生error事件时,
图像下载过程已经结束,也就是不能再重新下载了

var image = new Image();
image.src = 'smilex.gif';
image.onerror = function(e){
    console.log(e);
}

throw语句

throw语句用于抛出错误。抛出错误时,必须要给throw语句指定一个值,这个值是什么类型,没有要求

抛出错误的过程是阻塞的,后续代码将不会执行

try catch语句与捕获错误

try{
    //通常来讲,这里的代码会从头到尾而不会产生任何问题
    //但有时会抛出一个异常,要么是由throw语句直接抛出,要么通过调用一个方法间接抛出
}catch(e){
    //当且仅当try语句块抛出了异常,才会执行这里的代码
    //这里可以通过局部变量e来获得对Error对象或者抛出的其他值的引用
    //这里的代码块可以基于某种原因处理这个异常,也可以忽略这个异常,还可以通过throw语句重新抛出异常
}finally{
    //不管try语句是否抛出了异常,finally里的逻辑总是会执行,终止try语句块的方式有:
    //1、正常终止,执行完语句块的最后一条语句
    //2、通过break、continue或return语句终止
    //3、抛出一个异常,异常被catch从句捕获
    //4、抛出一个异常,异常未被捕获,继续向上传播
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant