我正在编写将用于访问数据库的Java库。 我向最终程序员抛出异常,他们使用JAR库以他/她想要的方式处理它。
我编写了一个自定义Exception(下面提供)来将特定于连接的异常包装在一起,这样最终程序员就不必在代码中捕获所有这些异常。 (为了方便他)
在编写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();
}
}
}
答案 0 :(得分:3)
您可以将原因(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
}
答案 1 :(得分:2)