gpt4 book ai didi

java - 将 RuntimeException 转换为 Checked 是一个好习惯吗?

转载 作者:太空宇宙 更新时间:2023-11-04 07:10:37 24 4
gpt4 key购买 nike

我有下面的类,其中一个方法会抛出检查异常。

public class Sample{

public String getName() throws DaoException{

//Some code
//this method contacts some third party library and that can throw RunTimeExceptions

}

}

DaoException.java

public class DaoException Extends Exception{
//Some code


}

现在在另一个类中,我需要调用上面的方法并处理异常。

public String getResult() throws ServiceException{
try{
String result = sample.getName();
//some code
}catch(Exception e){
throw new ServiceException(e)
}
return result;
}

ServiceException.java

public class ServiceException Extends Exception{
//Some code


}

在上面的 catch block 中,我的 DAO 方法可以抛出 DaoException 或任何运行时异常。但我有一个 catch block ,它将捕获两者并将它们转换为已检查异常并返回。

转换是好的做法还是应该按原样抛出运行时异常?

谢谢!

最佳答案

在大多数情况下,某些库抛出RuntimeException意味着发生的情况无法处理,例如NullPointerException。因此,当您将它们包装到已检查异常中时,客户端将被迫处理此类没有必要捕获的异常。

所以我想说,只有在有机会从某些糟糕情况中恢复时才包装异常。

检查异常的良好使用:

很多时候有些操作是定时操作,tryConnection(duration),当duration超时时就会抛出一个检查异常TimedOutException,现在客户端可以决定是否需要重试。所以这达到了检查异常的目的。

关于java - 将 RuntimeException 转换为 Checked 是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20679295/

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