- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
IO.j s Errors
io.js⽣成的错误分为两类:JavaScript错误和系统错误。所有的错误都继承于
JavaScript的Error类,或就是它的实例。并且都⾄少 供这个类中可⽤的属性。
当⼀个操作因为语法错误或语⾔运⾏时级别 (language-runtime-level )的原因不被允许
时,⼀个JavaScript error会被⽣成并抛出⼀个异常。如果⼀个操作因为系统级
别 (system-level )限制⽽不被允许时,⼀个系统错误会被⽣成。客户端代码接着会根
据API传播它的⽅式来被给予捕获这个错误的机会。
API被调⽤的风格决定了⽣成的错误如何回送 (handed back ),传播给客户端。这反
过来告诉客户端如何捕获它们。异常可以通过try / catch结构捕获;其他的捕获
⽅式请参阅下⽂。
JavaScript错误
JavaScript错误表⽰API被错误的使⽤了,或者正在写的程序有问题。
Class: Error
⼀个普通的错误对象。和其他的错误对象不同,Error实例不指⽰任何 为什么错误发
⽣ 的原因。Error在它们被实例化时,会记录下“堆栈追踪”信息,并且可以会 供⼀
个错误描述。
注意:io.js会将系统错误以及JavaScript错误都封装为这个类的实例。
new Error(message)
实例化⼀个新的Error对象,并且⽤ 供的message设置它的.message属性。它
的.stack属性将会描述new Error被调⽤时程序的这⼀刻。堆栈追踪信息⾪属于V8
堆栈追踪API 。堆栈追踪信息只延伸到同步代码执⾏的开始,
或Error.stackTraceLimit给出的帧数 (number of frames ),这取决于哪个更
⼩。
error.message
⼀个在Error()实例化时被传递的字符串。这个信息会出现在堆栈追踪信息的第⼀
⾏。改变这个值将不会改变堆栈追踪信息的第⼀⾏。
error.stack
这个属性返回⼀个代表错误被实例化时程序运⾏的那个点的字符串。
⼀个堆栈追踪信息例⼦:
Error: Things keep happening!
at /home/gb sey/file.js:525:2
at Frobnicator.refrob late (/home/gb sey/b siness-logic.js:424
at Actor. (/home/gb sey/actors.js:400:8)
at increaseSynergy (/home/gb sey/actors.js:701:6)
第⼀⾏被格式化为错误类名: 错误信息,然后是⼀系列的堆栈信息帧
(以“at”开头)。每帧都描述了⼀个最终导致错误⽣成的⼀次调⽤的地点。V8会试
图去给出每个函数的名字 (通过变量名,函数名或对象⽅法名),但是也有可能它找
不到⼀个合适的名字。如果V8不能为函数定义⼀个名字,那么那⼀帧⾥只会展⽰出位
置信息。否则,被定义的函数名会显⽰在位置信息之前。
帧只会由JavaScript函数⽣成。例如,如果在⼀个JavaScript函数⾥,同步执⾏
了⼀个叫cheetahify的C++ addon函数,那么堆栈追踪信息中的帧⾥将不会
有cheetahify调⽤:
var cheetahify = req ire(./native-binding.node);
f nction makeFaster() {
// cheetahify *synchrono sly* calls speedy .
cheetahify(f nction speedy() {
throw new Error(oh no!);
});
}
makeFaster(); // will throw :
// /home/gb sey/file.js:6
// throw new Error(oh no!);
// ^
// Error: oh no!
// at speedy (/home/gb sey/file.js:6:11)
// at makeFaster (/home/gb sey/file.js:5:3)
// at Object.anonymo s (/home/gb sey/file.js:10:1)
// at Mod le._compile (mod
文档评论(0)