文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
异常处理
Click 内部使用异常来表示应用程序用户可能导致的各种错误情况。主要是不正确的用法。
哪里处理错误?
Click 的主要错误处理发生在 BaseCommand.main()
. 在这里,它处理所有子类 ClickException
以及标准 EOFError
和 KeyboardInterrupt
例外情况。后者内部转换为 Abort
.
应用的逻辑如下:
- 如果一个
EOFError
或KeyboardInterrupt
发生了,重估为Abort
. - 如果一个
ClickException
引发,调用ClickException.show()
方法显示它,然后用ClickException.exit_code
. - 如果一个
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()
方法,但禁用独立模式,该模式将执行两个操作:禁用异常处理和禁用隐式 sys.exit()
最后。
所以你可以这样做:
command.main(['command-name', 'args', 'go', 'here'], standalone_mode=False)
哪些例外情况存在?
Click 有两个异常基: ClickException
对于 Click 希望向用户发出信号的所有异常,将引发 Abort
用于指示 Click 中止执行。
A ClickException
有一个 show()
方法,它可以将错误消息呈现给 stderr 或给定的文件对象。如果您想自己使用这个异常来做一些事情,请检查 API 文档,了解它们还提供了什么。
存在以下常见子类:
UsageError
通知用户出了问题。BadParameter
通知用户某个特定参数出了问题。这些通常在内部通过 Click 进行处理,如果可能,还可以添加额外的信息。例如,如果这些都是从回调中引发的,那么如果可能的话,Click 将自动用参数名对其进行扩充。FileError
这是由FileType
如果 Click 在打开文件时遇到问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论