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