1
在SBCL爲我打開一個不存在的文件時,請在這裏我可以處理錯誤:訪問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」少一點?
'(sb-int:strerror errno)'似乎是如何條件[報告功能](https://sourceforge.net/p/sbcl/sbcl/ci/master/tree/contrib/sb-posix/ interface.lisp#l66)得到它。 – jkiiski
@jkiiski:完美!如果您希望將其作爲正式答案,我會加倍努力並將其標記爲首選解決方案。 –