我正在编写一个处理某些文件的工具。此工具将具有命令行界面,但也可以用作第三方代码的类库。为了处理错误,我只是抛出异常。第三方代码可以处理异常,命令行界面可能只打印它并中止。然而,除了致命的错误之外,还有可能出现一种并非致命的情况,而且这个过程可以继续,为此我想“发出警告”并继续。
我如何处理警告,以便第三方代码和命令行界面都能用它做什么?
你也为此抛出一个异常(假设错误条件确实异常 - 预计很少见)。
异常并不总是致命的 - 您需要抛出第三方代码和命令行代码可以捕获并执行的特定类型的异常。
异常处理的一个规则是处理您知道如何处理的异常 - 如果您有错误的特定异常类型并且您记录它,客户端代码应该知道如何处理它(或不处理)。
如果您要做的是提供使用代码的信息 - 已经在库中处理但用户可能想知道的警告 - 您可以使用tracing子系统输出跟踪。所有用户都需要做的是配置一个监听器,并能够在运行时获取信息。
我建议你不要抛出异常,如果可能的话应该避免它们(它们的资源成本很高)。相反,您可以创建一个事件并将其提升。第三方代码和命令行界面只需要签署此事件。