我正在寻找清理当前我正在处理的代码库的异常混乱。
基本设置是这样的。
我有一个由许多类实现的接口,如下所示:
public interface TerminalMessage<E> {
// Override for specific return data type.
public E send(TerminalStream stream) throws Exception;
}
这些类会抛出很多不同的异常,例如 IOException、InterruptedException 等。
就像现在一样,我所做的就是在捕获的异常上调用 getMessage() 并将此消息传递给 ui 代码。
这不是很好,因为我有时会收到向用户显示的虚假消息,并且我会捕获不需要的异常。
我正在考虑创建一个自定义异常类 (TerminalException) 来包装所有这些类型的异常。
但是我不确定在哪里进行包装,应该在第一次抛出异常的地方(例如在输出流中)还是在每个 send() 方法中进行包装。前者的优点是不会添加太多代码,但对我来说,流抛出 IOException 而不是 TerminalException 更有意义。
上面的设计也没有真正解决有时显示给用户的错误消息,所以一些关于如何将抛出的异常转换为对用户有用的东西的技巧会很棒!
谢谢!