我正在为 vim 插件开发一个小型测试框架,并尝试实现一个调用用户指定函数的函数,并在需要时检查该函数是否调用异常。我遇到的问题是我无法让 vim catch 子句接受传入测试函数的字符串。
这是我想要的简化版本。
function! TestException(fx, arguments, exception)
let Fx = function(a:fx)
try
call call(Fx, a:arguments)
catch a:exception " Here's the problem line
return 1
endtry
return 0
endfunction
如果我将异常硬编码到 catch 子句中,这个函数就可以正常工作
catch /E740/
或其他什么,但它不会插入传入的变量。我尝试在“执行”字符串中执行整个块,但这似乎也不起作用。
到目前为止,我已经提出了这个问题,并允许它捕获任何异常并相信调用者理解这种一般测试的局限性。
那么,有没有人知道如何解决这个问题,或者,有没有人知道一种方法来确定在它被捕获后引发了哪个异常,以便我可以将它与事后的论点进行比较?