gpt4 book ai didi

clojurescript - 在 ClojureScript 中获取堆栈跟踪

转载 作者:行者123 更新时间:2023-12-04 15:36:36 27 4
gpt4 key购买 nike

在 Ubuntu 10.04.1 LTS 上的 FireFox 5.0 中运行的 ClojureScript 程序中,当抛出异常时,我得到一条神秘的线。

'错误:没有为类型对象定义协议(protocol)方法 ISeqable.-seq:[object Object]' 调用方法时:[nsIDOMEventListener::handleEvent]

“-seq”位对我来说似乎很奇怪,我已经搜索了生成的 javascript 文件并没有找到它。

我希望我没有遗漏一些完全明显的东西,但是如何获得抛出异常的堆栈跟踪?你如何调试你的脚本?

最佳答案

不幸的是,错误的堆栈跟踪依赖于浏览器的支持。大多数(全部?)浏览器将允许您通过取消引用“堆栈”字段以字符串形式访问堆栈跟踪的固定版本(通常是前 10 个元素,iirc),因此您可以执行以下操作:

(try ...throws...
(catch js/Error e
(.log js/console (.-stack e))))

但是,字符串堆栈跟踪并不是很有趣,您无法单击它们以将您带到源代码。更好的是将异常目录打印到 javascript 控制台(如果可用)以打印带有可点击链接的堆栈跟踪。例如。
(try ...throws...
(catch js/Error e
(.log js/console e)))

至少在 chrome 中,这仅在引发错误时打开 javascript 控制台时才有效。这对于调试非常有用,但在出现意外错误时用处不大。

大多数浏览器提供的 javascript 控制台对象都有很多有用的功能,您可以从 clojurescript 中使用它们。但是,如果您想获得有用的行号,您可能需要编写几个宏来注入(inject)代码以打印到控制台,否则您的所有行号都将指向您的打印函数。

关于clojurescript - 在 ClojureScript 中获取堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7664651/

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