在某些情况下,我故意在存储过程中触发错误,我想在使用Tedious程序包的Node.js API中捕获该错误。
API的代码段:
let request = new Request(sql, (err)=>{
if (err) {
sqlerr = err;
console.log(typeof(err));
console.log("**RQ-ERROR**", err);
}
});
在上面的“ Request”对象的回调中,有一个“ err”参数。 “ typeof()”返回“ object”;但是,当我将其转储到控制台时,它看起来像这样:
**RQ-ERROR** { RequestError: Duplicate entry for specified period
at RequestError (C:\inetpub\wwwroot\PersonnelApps\kudosapi\node_modules\tedious\lib\errors.js:32:12)
at Parser.tokenStreamParser.on.token (C:\inetpub\wwwroot\PersonnelApps\kudosapi\node_modules\tedious\lib\connection.js:723:34)
at emitOne (events.js:96:13)
at Parser.emit (events.js:188:7)
at Parser.parser.on.token (C:\inetpub\wwwroot\PersonnelApps\kudosapi\node_modules\tedious\lib\token\token-stream-parser.js:27:14)
at emitOne (events.js:96:13)
at Parser.emit (events.js:188:7)
at addChunk (C:\inetpub\wwwroot\PersonnelApps\kudosapi\node_modules\readable-stream\lib\_stream_readable.js:297:12)
at readableAddChunk (C:\inetpub\wwwroot\PersonnelApps\kudosapi\node_modules\readable-stream\lib\_stream_readable.js:279:11)
at Parser.Readable.push (C:\inetpub\wwwroot\PersonnelApps\kudosapi\node_modules\readable-stream\lib\_stream_readable.js:240:10)
message: 'Duplicate entry for specified period',
code: 'EREQUEST',
number: 50000,
state: 1,
class: 16,
serverName: 'PERSODG2LNN52\\SQLEXPRESS',
procName: 'CreateStatusReport',
lineNumber: 44 }
这几乎看起来像一个JavaScript对象,但是,正如您所看到的,“ message”成员之前的文本“ 240:10)”后面没有引用“ RequestError”数据,也没有逗号。我不确定这是否是TDS中的错误,或者我只是丢失了某些东西,但无法按原样访问任何成员。我必须将其转换为字符串并解析它,这很好,但不是很优雅。
建议?
答案 0 :(得分:0)
如您所见,文本“ 240:10)”后面没有引用“ RequestError”数据,也没有逗号
这些是控制台中注销错误消息的工件。您可以使用以下类似的方法自己尝试一下:
$ node
> console.log(new Error('this is an error object!'));
Error: this is an error object!
at repl:1:13
at Script.runInThisContext (vm.js:119:20)
at REPLServer.defaultEval (repl.js:332:29)
at bound (domain.js:395:14)
at REPLServer.runBound [as eval] (domain.js:408:12)
at REPLServer.onLine (repl.js:639:10)
at REPLServer.emit (events.js:194:15)
at REPLServer.EventEmitter.emit (domain.js:441:20)
at REPLServer.Interface._onLine (readline.js:290:10)
at REPLServer.Interface._line (readline.js:638:8)
我不确定该问题的预期结果是什么,但请尝试检查err.message
属性,而不要使用typeof
运算符。