Я пытаюсь поймать исключение в Vimscript и остановить выполнение в функции, где происходит ошибка. Я могу уловить ошибку, но функция, в которой это происходит, находится на несколько уровней ниже в стеке вызовов, поэтому все, что происходит, - это еще одна ошибка в вызывающей функции. Сообщение об ошибке, которое я поместил в 'catch' оригинальной функции, никогда не появляется, и в вызывающей функции генерируется обычная ошибка Vim. Я могу поставить try / catches на всем пути вверх по цепочке, но похоже, что я должен быть в состоянии остановить выполнение прямо там, где это происходит.
Вот пример, иллюстрирующий, что я имею в виду:
function Function1()
call Function2()
endfunction
function Function2()
call Function3()
endfunction
function Function3()
try
[...]
catch
echo "An error occurred. Execution should be stopped . . ."
" I've tried putting 'normal <ctrl-C>' but it doesn't seem to
" do anything. . . Execution silently goes back to function2,
" where another (uncaught) error occurs
endtry
endfunction