JS错误类型的学习
来源:互联网 发布:编程老师工资待遇 编辑:程序博客网 时间:2024/06/09 14:43
(1)SyntaxError
SyntaxError是解析代码时发生的语法错误
// 变量名错误 var 1a; // 缺少括号 console.log 'hello');
(2)ReferenceError
ReferenceError是引用一个不存在的变量时发生的错误。
unknownVariable // ReferenceError: unknownVariable is not defined
另一种触发场景是,将一个值分配给无法分配的对象,比如对函数的运行结果或者this赋值。
console.log() = 1 // ReferenceError: Invalid left-hand side in assignment this = 1 // ReferenceError: Invalid left-hand side in assignment
上面代码对函数console.log的运行结果和this赋值,结果都引发了ReferenceError错误
(3)RangeError
RangeError是当一个值超出有效范围时发生的错误。主要有几种情况,一是数组长度为负数,二是Number对象的方法参数超出范围,以及函数堆栈超过最大值。
new Array(-1) // RangeError: Invalid array length (1234).toExponential(21) // RangeError: toExponential() argument must be between 0 and 20
(4)TypeError
TypeError是变量或参数不是预期类型时发生的错误。比如,对字符串、布尔值、数值等原始类型的值使用new命令,就会抛出这种错误,因为new命令的参数应该是一个构造函数。
new 123 //TypeError: number is not a func var obj = {}; obj.unknownMethod() // TypeError: undefined is not a function
上面代码的第二种情况,调用对象不存在的方法,会抛出TypeError错误。
(5)URIError
URIError是URI相关函数的参数不正确时抛出的错误,主要涉及encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()这六个函数。
decodeURI('%2') // URIError: URI malformed
(6)EvalError
eval函数没有被正确执行时,会抛出EvalError错误。该错误类型已经不再在ES5中出现了,只是为了保证与以前代码兼容,才继续保留。
以上这6种派生错误,连同原始的Error对象,都是构造函数。开发者可以使用它们,人为生成错误对象的实例。
new Error("出错了!");
new RangeError("出错了,变量超出有效范围!");
new TypeError("出错了,变量类型无效!");
上面代码表示新建错误对象的实例,实质就是手动抛出错误。可以看到,错误对象的构造函数接受一个参数,代表错误提示信息(message)。
- JS错误类型的学习
- JS的常见的错误类型讲解
- 【js报类型未定义的错误】20140826
- JS常见的六类错误类型
- js 常见错误类型
- js 常见错误类型
- js 常见错误类型
- 学习js的笔记--检测类型
- 常见的js各种错误类型汇总说明
- struts2系列学习笔记(8)---------------类型转换的错误处理
- PHP的错误类型
- PHP的错误类型
- PHP的错误类型
- Java的错误类型
- Node.js下自定义错误类型
- js传递参数时类型错误
- Node.js下如何自定义错误类型
- js学习笔记-引用类型
- java图形绘制
- Twig模板继承
- Android 2D翻转动画效果的实现
- Rust 1.10 发布
- 使用Fragment创建一个动态UI - 与其他Fragment通信
- JS错误类型的学习
- maven安装以及maven的相关知识
- 取消TableViewCell的选中状态
- Ajax的跨域访问
- http get 请求
- Java中重载和重写的区别
- Android解决WebView的定位功能、视频全屏播放、下载功能、页面Url的处理、进度条处理
- 让webstorm不加载node_modules文件
- Android Studio 的build variants 没有 test artifact问题