異常処理.

内部で例外を使用して、アプリケーションのユーザに様々なエラーが発生する可能性があることを通知します。これは主に不正確な使い方のことです。

間違いはどこで処理しますか。

クリックした主なエラー処理は BaseCommand.main() それがそうです。そこでは全てのサブクラスを処理しています ClickException そして基準は EOFError そして KeyboardInterrupt 例外です。後者は内部で Abort それがそうです。

アプリケーションのロジックは以下のとおりである.

  1. もし1つが EOFError あるいは…。 KeyboardInterrupt もし起こったら、それを再定義してください Abort それがそうです。

  2. もし1つが ClickException 起きれば呼び出します ClickException.show() それを表示して使用する方法は ClickException.exit_code それがそうです。

  3. もし1つが Abort 異常を起こして文字列を印刷する Aborted! 標準エラーを返し、ログアウトコードを使用してプログラムを終了します。 1 それがそうです。

  4. 正常に動作している場合は、ログアウトコードを使用してプログラムを終了して 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がファイルを開く時に問題があったら。