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