什么's抛出非Error对象的用例
What's the use case for throwing a non-Error object?
在JS中,您可以throw new Error()
、throw 'foo'
甚至throw null
。
为什么要抛出一个非Error
实例?我指的不是从Error
继承的对象——我指的是其他随机对象或基元。
throw
只是抛出一个任意表达式。它没有以任何方式连接到Error
对象;您可以throw
任何表达式。
但从Error对象继承可能是一个更好的主意,这正是其他标准内置错误所做的:
评估错误
创建一个实例,表示全局函数eval()发生的错误。
内部错误创建一个实例,表示在JavaScript引擎中引发内部错误时发生的错误。例如"递归过多"。
范围错误
创建一个实例,表示当数值变量或参数超出其有效范围时发生的错误。
引用错误
创建一个实例,表示取消引用无效引用时发生的错误。
语法错误
创建一个实例,表示在分析eval()中的代码时发生的语法错误。
类型错误
创建一个实例,表示变量或参数不是有效类型时发生的错误。
URI错误
创建一个实例,表示在向encodeURI()或decodeURI(()传递无效参数时发生的错误。
所有这些对象通常都继承自Error对象,因此,虽然抛出任何任意对象都是合法的,但抛出Error对象或继承自Error的对象可能更有意义,就像Javascript本身一样。
在这个MDN页面上有几个正确方法的例子。
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 如何访问npm模块抛出的自定义错误对象[error:[object object]]
- tizen.filesystem.resolve() error - 对象的内容不包含有效值
- error =“类型错误:对象 [对象对象] 在 main.js:33:12 没有方法'addUnique
- AngularJS是否在$error.maxlength对象中存储一个值
- 为什么 Javascript Error 对象不被 expressjs 视为对象
- {“code”:101,“error”:“找不到要更新的对象”} Parse.com Javascript SDK
- console.log格式化的错误对象不同于error.prototype.toString
- 有没有一种方法可以从Internet Explorer中的Error对象中获取行号或堆栈跟踪
- 从Error对象继承-其中是消息属性
- Fin上传器IE9 CORS iframe error”;对象不't支持属性或方法'_parseJsonR
- 如何检测AngularJs表单中的$error对象是否为空
- 如何创建、设计和抛出内置的Error对象
- 在Microsoft javascript中,是否可以获得Error对象的英文消息属性?
- 当错误信息是一个对象时,如何在javascript中创建一个新的Error
- 什么's抛出非Error对象的用例
- Ajax函数给出错误"Hit error fn!(对象对象),调用web服务时从以下函数中获取