gpt4 book ai didi

common-lisp - 访问 sbcl errno 字符串

转载 作者:行者123 更新时间:2023-12-02 03:47:49 29 4
gpt4 key购买 nike

在 sbcl 中,我可以像在此处打开不存在的文件时那样处理错误:

(require "SB-POSIX")
(let* (fd)
(handler-case
(setf fd (sb-posix:open "w" sb-posix:o-rdonly))
(sb-posix:syscall-error (c)
(princ "error ")
(princ (sb-posix:syscall-errno c))
(princ " during ")
(princ (sb-posix:syscall-name c))
(terpri))))
error 2 during OPEN-WITHOUT-MODE

如果我没有发现错误,结果的顶部如下所示:

 (require "SB-POSIX")
(let* (fd)
(setf fd (sb-posix:open "w" sb-posix:o-rdonly)))
Unhandled SB-POSIX:SYSCALL-ERROR:
Error in SB-POSIX::OPEN-WITHOUT-MODE: No such file or directory (2)

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1001976AB3}>

看到那里的“没有这样的文件或目录”了吗?有没有办法让我的代码可以访问该字符串,以便我的错误处理程序可以说出比“错误 2”稍微不那么愚蠢的内容?

最佳答案

report function对于条件,使用错误号调用 SB-INT:STRERROR 来获取字符串。这又只是一个 simple wrapper围绕获取错误代码描述的平台特定方式。

如果您使用 Emacs/Slime 并且有可用的 SBCL 源代码,您可以使用 M-. 跳转到函数/类/等的定义。这对于了解内部结构的工作原理非常有用。

关于common-lisp - 访问 sbcl errno 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46223393/

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