gpt4 book ai didi

javascript - Node 异常显示格式

转载 作者:行者123 更新时间:2023-12-03 04:35:38 25 4
gpt4 key购买 nike

在 Node.js 中,当您抛出异常但不捕获它时,默认情况下您会得到如下显示:

C:\tptp-parser\index.js:19
throw e
^

SyntaxError: Unknown language (33:7)
at err (C:\tptp-parser\index.js:14:10)
at Object.parse (C:\tptp-parser\index.js:354:5)
at read (C:\tptp-parser\tptp-parser.js:14:15)
at Object.<anonymous> (C:\tptp-parser\tptp-parser.js:37:3)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.runMain (module.js:604:10)

前三行是源代码中引发异常的位置,然后是消息,然后是堆栈跟踪。我知道如何自定义消息(如上面的示例);有没有办法也自定义前三行?

也就是说,我正在编写一个解析器,如果我可以更改前三行来显示,而不是解析器中的代码行,而是正在解析的文件中的文本行,那就太理想了。有办法做到这一点吗?

最佳答案

SyntaxError 是一个 nodejs 内置函数。

从 repl 中调用它会返回:

> SyntaxError('here')
SyntaxError: here
at SyntaxError (native)
at repl:1:1
at sigintHandlersWrap (vm.js:22:35)
at sigintHandlersWrap (vm.js:96:12)
at ContextifyScript.Script.runInThisContext (vm.js:21:12)
at REPLServer.defaultEval (repl.js:346:29)
at bound (domain.js:280:14)
at REPLServer.runBound [as eval] (domain.js:293:12)
at REPLServer.<anonymous> (repl.js:545:10)
at emitOne (events.js:101:20)

您可以通过首先将 Node 的默认 SyntaxError(msg) 替换为您自己的来完成您需要的操作。我认为您需要在所需的文件中执行此操作,以便在 Nodejs 解析器尝试解析错误代码之前定义它。

更新

稍微尝试一下 SyntaxError() 后,我上面的建议可能行不通。

由于您正在编写解析器,因此您可以查看 pegjs它允许您自定义解析期间抛出的错误。

关于javascript - Node 异常显示格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43311733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com