異常処理.¶
内部で例外を使用して、アプリケーションのユーザに様々なエラーが発生する可能性があることを通知します。これは主に不正確な使い方のことです。
間違いはどこで処理しますか。¶
クリックした主なエラー処理は BaseCommand.main() それがそうです。そこでは全てのサブクラスを処理しています ClickException そして基準は EOFError そして KeyboardInterrupt 例外です。後者は内部で Abort それがそうです。
アプリケーションのロジックは以下のとおりである.
もし1つが
EOFErrorあるいは…。KeyboardInterruptもし起こったら、それを再定義してくださいAbortそれがそうです。もし1つが
ClickException起きれば呼び出しますClickException.show()それを表示して使用する方法はClickException.exit_codeそれがそうです。もし1つが
Abort異常を起こして文字列を印刷するAborted!標準エラーを返し、ログアウトコードを使用してプログラムを終了します。1それがそうです。正常に動作している場合は、ログアウトコードを使用してプログラムを終了して
0それがそうです。
もし私が欲しくなかったら?¶
通常、呼び出しを選択することができます invoke() 自分の方法です。例えばもしあなたが Command 以下のように手動で呼び出すことができます。
ctx = command.make_context('command-name', ['args', 'go', 'here'])
with ctx:
result = command.invoke(ctx)
この場合、異常は全く処理されず、あなたが予想していたように泡が出るだろう。
Click 3.0から始めて、ご利用いただけます Command.main() 方法、しかし独立モードを無効にして、これは2つのことをします:例外処理の無効化と暗黙的な無効化 sys.exit() 最後に。
したがって、あなたはそうすることができます:
command.main(['command-name', 'args', 'go', 'here'],
standalone_mode=False)
どんな例外がありますか。¶
2つの例外ベースをクリックします ClickException Clickがユーザに信号を送るすべての異常については Abort Clickに実行を中止するように指示するために用いられる.
A ClickException Vbl.ある show() 方法は、stderrまたは所与のファイル·オブジェクトにエラーメッセージを提示することができる。いくつかの操作を実行するために例外を使用したい場合は、API文書を見て、それらが何を提供しているのかを理解してください。
以下の共通サブクラスが存在する:
UsageError問題が発生したことをユーザーに通知する。BadParameterある特定のパラメータに問題が発生したことをユーザに通知する.これらは通常Clickで内部処理を行い,可能な場合には余分な情報を追加する.たとえば,これらのパラメータがコールバックから開始された場合,Clickは可能な場合にパラメータ名を用いて自動的に増加する.FileErrorこれはFileTypeもしClickがファイルを開く時に問題があったら。