JS常见异常类型以及捕获异常

来源:程序思维浏览:1506次
JS常见异常类型以及捕获异常

先了解下JS下面经常遇到的异常类型,大概分类有如下几种异常

EvalError: raised when an error occurs executing code in eval()
RangeError: raised when a numeric variable or parameter is outside of its valid range
ReferenceError: raised when de-referencing an invalid reference
SyntaxError: raised when a syntax error occurs while parsing code in eval()
TypeError: raised when a variable or parameter is not a valid type
URIError: raised when encodeURI() or decodeURI() are passed invalid parameters
上面的六种异常对象都继承自Error对象。

他们都支持以下两种构造方法: new Error();
new Error(“异常信息”);

在JavaScript可以使用try…catch来进行异常处理。

例如:

try {
    foo.bar();
} catch (e) {
    alert(e.name + “: ” + e.message);
}

手工抛出异常的方法如下:

try {
    throw new Error(“Whoops!”);
} catch (e) {
    alert(e.name + “: ” + e.message);
}

如要判断异常信息的类型,可在catch中进行判断:

try {
    foo.bar();
} catch (e) {
    if (e instanceof EvalError) {
        alert(e.name + “:” + e.message);
    }
    else if (e instanceof RangeError) {
        alert(e.name + “: ” + e.message);
    }
    // etc
}


Error具有下面一些主要属性:

description: 错误描述 (仅IE可用).
fileName: 出错的文件名 (仅Mozilla可用).
lineNumber: 出错的行数 (仅Mozilla可用).
message: 错误信息 (在IE下同description)
name: 错误类型.
number: 错误代码 (仅IE可用).
stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用).
因此为了更好的了解错误信息我们可以将catch部分改为如下形式:

try {
    foo.bar();
} catch (e) {
    if (browserType != BROWSER_IE) {
        alert(“name: ” + e.name +
                “message: ” + e.message +
                “lineNumber: ” + e.lineNumber +
                “fileName: ” + e.fileName +
                “stack: ” + e.stack);
    }
    else {
        alert(“name: ” + e.name +
                “errorNumber: ” + (e.number & 0xFFFF ) +
                “message: ” + e.message”);
        }
}

JavaScript中的throw命令事实上可以抛出任何对象,并且我们可以在catch接受到此对象。

例如:try {
    throw new Date(); // 抛出当前时间对象
} catch (e) {
    alert(e.toLocaleString()); // 使用本地格式显示当前时间

}
精品好课
最新完整React+VUE视频教程从入门到精,企业级实战项目
React和VUE是目前最火的前端框架,就业薪资很高,本课程教您如何快速学会React和VUE并应用到实战,教你如何解决内存泄漏,常用库的使用,自己封装组件,正式上线白屏问题,性能优化等。对正在工作当中或打算学习Re...
最新完整React视频教程从入门到精通纯干货纯实战
React是目前最火的前端框架,就业薪资很高,本课程教您如何快速学会React并应用到实战,教你如何解决内存泄漏,常用UI库的使用,自己封装组件,正式上线白屏问题,性能优化等。对正在工作当中或打算学习React高薪就...
HTML5基础入门视频教程易学必会
HTML5基础入门视频教程,教学思路清晰,简单易学必会。适合人群:创业者,只要会打字,对互联网编程感兴趣都可以学。课程概述:该课程主要讲解HTML(学习HTML5的必备基础语言)、CSS3、Javascript(学习...
React实战视频教程仿京东移动端电商
React是前端最火的框架之一,就业薪资很高,本课程教您如何快速学会React并应用到实战,对正在工作当中或打算学习React高薪就业的你来说,那么这门课程便是你手中的葵花宝典。
Vue2+Vue3+ES6+TS+Uni-app开发微信小程序从入门到实战视频教程
2021年最新Vue2+Vue3+ES6+TypeScript和uni-app开发微信小程序从入门到实战视频教程,本课程教你如何快速学会VUE和uni-app并应用到实战,教你如何解决内存泄漏,常用UI库的使用,自己...
HTML5视频播放器video开发教程
适用人群1、有html基础2、有css基础3、有javascript基础课程概述手把手教你如何开发属于自己的HTML5视频播放器,利用mp4转成m3u8格式的视频,并在移动端和PC端进行播放支持m3u8直播格式,兼容...
VUE2+VUE3视频教程从入门到精通(全网最全的Vue课程)
VUE是目前最火的前端框架之一,就业薪资很高,本课程教您如何快速学会VUE+ES6并应用到实战,教你如何解决内存泄漏,常用UI库的使用,自己封装组件,正式上线白屏问题,性能优化等。对正在工作当中或打算学习VUE高薪就...
jQuery视频教程从入门到精通
jquery视频教程从入门到精通,课程主要包含:jquery选择器、jquery事件、jquery文档操作、动画、Ajax、jquery插件的制作、jquery下拉无限加载插件的制作等等......
收藏
扫一扫关注我们