gpt4 book ai didi

java - 包装多个异常的自定义异常 : Encouraged or Not?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:27:30 24 4
gpt4 key购买 nike

我正在编写一个用于访问数据库的 Java 库。我将异常抛给使用 JAR 库以他/她想要的方式处理它的最终程序员。

我编写了一个自定义异常(在下面提供)来将特定于连接的异常包装在一起,这样最终程序员就不必在他的代码中捕获所有这些异常。 (让他轻松一点)

在编写 Java 库时,这是一个好的做法吗?通过使用它,用户只需在他的代码中捕获 NConnectionException。

public class NConnectionException extends Exception {
private static final Logger logger = LoggerFactory.getLogger(NConnectionException.class);
public NConnectionException(Exception e) {

if (e instanceof NullPointerException) {
logger.error("ERROR IN READING DF");
e.printStackTrace();
}

else if (e instanceof FileNotFoundException) {
logger.error("FILE NOT FOUND");
e.printStackTrace();

} else if (e instanceof ParserConfigurationException)
{
logger.error("PARSE CONF ERR");
e.printStackTrace();

}
else if (e instanceof org.xml.sax.SAXException)
{
logger.error("SAX ERR");
e.printStackTrace();

}
else if (e instanceof IOException)
{
logger.error("IO ERR");
e.printStackTrace();

}

}

最佳答案

您可以将原因 (Throwable) 传递给自定义异常。看Exception javadoc 获取更多信息。

编辑:

public class CustomException extends Exception {
public CustomException(Throwable t) {
super(t);
}
}

public void testMethod(String s) throws CustomException {
try {
int integer = Integer.parseInt(s);
} catch (NumberFormatException e) {
throw new CustomException(e);
}
}

try {
testMethod("not a number");
} catch (CustomException ce) {
ce.printStackTrace(); // this will print that a CustomException
// with the cause NumberFormatException has occured.
ce.getCause(); // this will return the cause that
// we set in the catch clause in the method testMethod
}

关于java - 包装多个异常的自定义异常 : Encouraged or Not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29538079/

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