java – 包含多个异常的自定义异常:鼓励与否?

我正在编写将用于访问数据库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();

    }

}

}

解决方法

根据 this帖子,将所有异常包装在一起并不好.

如果你想包装它们

由于您的程序一次只会抛出一个异常,因此无需在NConnectionException中存储异常列表.

您可以在NConnectionException类中创建单个异常对象.你可以参考this结构.

并将抛出的异常存储在该对象中并返回新创建的NConnectionException类对象.让调用程序捕获NConnectionException异常并取出存储的对象并相应地执行操作.

注意:通常我们不处理未经检查的异常(如NullPointerException),调用程序会处理它.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...