gpt4 book ai didi

java - 如何清理我的异常处理?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:58:15 26 4
gpt4 key购买 nike

我正在寻找清理目前我正在处理的代码库的异常困惑。

基本设置是这样的。

我有一个由很多类实现的接口(interface),如下所示:

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 对我来说更有意义。

上述设计也没有真正解决有时向用户显示错误消息的问题,因此一些关于如何将抛出的异常转换为对用户有用的东西的提示会很棒!

谢谢!

最佳答案

如果您在其中包含有用的信息(如错误代码),自定义异常是一个非常好的主意。

只需用 TerminalException 包装所有内容,但不要忘记原因

使用抛出的第一个 TerminalException:

public class MyException extends Exception{
String errorMessage;

public MyException(String message, Exception cause){
super();

if(cause instanceof MyException){
// already wrapped
errorMessage= cause.getErrorMessage();
initCause(cause.getCause());
}
else{
// not my Exception
errorMessage=message;
initCause(cause);
}
´

}

}

关于java - 如何清理我的异常处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10293558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com