我正在编写一个处理文件的工具。这个工具将拥有一个命令行界面,但也可以作为第三方代码的类库使用。为了处理错误,我会抛出一个异常。第三方代码可以处理异常,而命令行界面可能只是打印错误并退出。然而,除了致命错误之外,还有可能发生一种不致命的情况,进程可以继续进行,我希望能够“发出警告”并继续进行。
如何处理警告,以使第三方代码和命令行界面都可以对其进行处理?
如何处理警告,以使第三方代码和命令行界面都可以对其进行处理?
如果错误条件确实是异常情况(这通常是罕见的),你也可以抛出异常。
异常并不总是致命的 - 你需要抛出一个特定的异常类型,让第三方代码和命令行代码能够捕获并采取行动。
异常处理的一个原则是处理你知道如何处理的异常 - 如果你为错误定义了一个特定的异常类型,并进行了文档化,客户端代码应该知道如何处理它(或者不处理)。
warnings.warn('some message')
或logging.warning('some message')
来发出警告,并且知道我的消息很可能对调用代码可见,它的作者可以全局地配置如何处理和记录警告。在 C# 中,没有类似的系统。你不知道调用应用程序是否使用了哪个日志库,而且即使你知道也可能无法连接到它。还有什么办法吗?只能 打印 警告并希望它不会破坏任何东西吗? - Mark Amery