在vimscript中, function
定义可以采取 abort
论据。引用文档,
When the [abort] argument is added, the function will
abort as soon as an error is detected
这使我严重质疑在遇到错误时通常会做什么功能。盲目地跌入黑暗中?
是什么 abort
实际上呢?它会破坏所有的 try...endtry
块?你什么时候想用它,什么时候想避免它?
在vimscript中, function
定义可以采取 abort
论据。引用文档,
When the [abort] argument is added, the function will
abort as soon as an error is detected
这使我严重质疑在遇到错误时通常会做什么功能。盲目地跌入黑暗中?
是什么 abort
实际上呢?它会破坏所有的 try...endtry
块?你什么时候想用它,什么时候想避免它?
正如所提到的那样,所有复杂的细节都记录在了 :help except-compat
,答案基本归结为向后兼容性和Vimscript固有的灵活性。
从记录的宏到映射到自定义函数有一个自然的进展。考虑到这一点,当函数中的命令导致错误时(例如,一个错误)可能是有意义的 %s/foo/bar/
这是不匹配和错过的 e
旗帜),处理应继续。
另一方面,当你写“工业级”映射时,你几乎总是使用a try..catch
无论如何阻塞函数调用层次结构(以避免任何多行错误 Error detected while processing function: ...
,而是向用户显示一个很好的错误消息)。
所以在实践中,大多数已发布的插件都不使用 abort
但是 try..catch
无论如何,对于快速的,袖手旁观的东西,你通常不会太在意错误处理。