gpt4 book ai didi

emacs - elisp 中捕获错误情况的最佳方法是什么

转载 作者:行者123 更新时间:2023-12-04 16:40:28 26 4
gpt4 key购买 nike

我正在尝试增加 etags-select 功能,因此如果 find-tag 点失败,它将回退到正常的 find-tag。我试过的代码是:

(defun my-etags-find-tag ()
"Find at point or fall back"
(interactive)
(unless (etags-select-find-tag-at-point)
(etags-select-find-tag)))

(global-set-key (kbd "C-f") 'my-etags-find-tag)

但是,当点不在有效标签上时,这会失败。相反,我收到了 etags-select-find-tag-at-point 抛出的错误:
etags-select-find-tag-at-point: Wrong type argument: char-or-string-p, nil

在这种情况下,我只需要重复 etags-select-find-tag-at-point 完成的测试:
(defun my-etags-find-tag ()
"Find at point or fall back"
(interactive)
(if (find-tag-default)
(etags-select-find-tag-at-point)
(etags-select-find-tag)))

但这似乎有点多余。是否可以在 elisp 中捕获异常并进行交替处理?

最佳答案

试试 ignore-errors ;例如,

(unless (ignore-errors (etags-select-find-tag-at-point))
(etags-select-find-tag))
通常, (ignore-errors body)返回任何内容 body返回;当有错误时,它返回 nil .
还看 condition-case用于更一般的条件处理。
如果您安装了 Elisp 信息手册,您可以从
C-HS ignore-errors .
编辑:
我没有考虑函数在成功时返回 nil 的可能性;所以我们可能需要
(unless (ignore-errors (or (etags-select-find-tag-at-point) t))
(etags-select-find-tag))

关于emacs - elisp 中捕获错误情况的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11578723/

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