22

vimscript では、function定義はabort引数を取ることができます。ドキュメントを引用するには、

When the [abort] argument is added, the function will
abort as soon as an error is detected

これにより、エラーが発生したときに関数が通常何をするのかを真剣に疑問視するようになります。やみくもに暗闇につまずく?

実際には何をしabortますか?try...endtryそれはすべてのブロックを壊しますか?いつそれを使いたいですか、いつそれを避けたいですか?

4

1 に答える 1

18

glts が述べたように、すべての複雑な詳細は に文書化されて:help except-compatおり、その答えは基本的に下位互換性と Vimscript 固有の柔軟性に帰着します。

記録されたマクロからカスタム関数へのマッピングへの自然な進行があります。そのことを念頭に置いて、関数内のコマンドがエラーを引き起こした場合 (たとえば、フラグ%s/foo/bar/が一致せず欠落している場合)、処理を続行する必要があることは理にかなっています。e

一方、「工業用」マッピングを作成する場合は、ほとんどの場合try..catch、関数呼び出し階層内でブロックを使用します (複数行エラーを回避しError detected while processing function: ...、代わりにユーザーに適切なエラー メッセージを表示するため)。

したがって、実際には、ほとんどの公開されたプラグインは を使用しませんaborttry..catch、迅速ですぐに使用できるものについては、とにかく、通常はエラー処理についてあまり気にしません。

于 2012-11-17T09:20:46.937 に答える