Java 最佳实践-2个具有相同功能的方法-一个抛出异常,另一个抑制异常

Java 最佳实践-2个具有相同功能的方法-一个抛出异常,另一个抑制异常,java,exception,coding-style,overloading,Java,Exception,Coding Style,Overloading,因为基于exception子句重载方法没有意义。 大多数时候,当我们编写代码时,我们会遇到这样一个场景: 我们需要一些代码抛出一个异常,以便我们能够相应地处理它 有时,对于同一段代码,我们只想忽略该异常 下面的例子- // It is used at many places and we just want to take specific action if any exception is coming, // like retry if SQLExceptions private Li

因为基于exception子句重载方法没有意义。 大多数时候,当我们编写代码时,我们会遇到这样一个场景:

  • 我们需要一些代码抛出一个异常,以便我们能够相应地处理它
  • 有时,对于同一段代码,我们只想忽略该异常
下面的例子-

// It is used at many places and we just want to take specific action if any exception is coming,
// like retry if SQLExceptions
private List<Contact> getContacts() throws Exceptions{                 
    List<Contact> contacts = null;
    try {
        contacts = contactDao.getContacts();
    } catch (SQLException ex) {
        logger(ex);
        throw ex;
    }
    return contacts;
}
//它在很多地方都有使用,如果出现异常,我们只想采取具体的行动,
//类似于在SQLException出现异常时重试
私有列表getContacts()引发异常{
列出联系人=空;
试一试{
contacts=contactDao.getContacts();
}catch(SQLException-ex){
记录器(ex);
掷骰子;
}
返回联系人;
}

private List getContacts1()引发异常{
列出联系人=空;
试一试{
contacts=contactDao.getContacts();
}catch(SQLException-ex){
记录器(ex);
}
返回联系人;
}
//它在某些地方使用,我希望这个方法抛出一个异常,
//我想使用空检查来处理它

写这种方法的正确方法应该是什么。

我想,你应该有两种方法,因为它们在里面做不同的事情

例如,在ROR,有一个约定来处理您的问题。当方法使用
完成时表示如果出现问题,将引发异常。因此,当您想要保存项目时,可以调用

  • 保存:如果无法保存项目或返回项目本身,则会引发异常
  • 保存
    :它不会引发任何问题,并根据操作状态返回true或false
我不确定您正在编写哪种语言,但也许找到您的语言惯例会有所帮助。如果您当前的语言/框架没有约定,您可以与您的团队一起定义约定,并在内部使用。例如,您可以定义一个
getContacts\u unsafe
方法,并知道后缀表示它不会引发异常

    private List<Contact> getContacts1() throws Exceptions{                 
        List<Contact> contacts = null;
        try {
            contacts = contactDao.getContacts();
        } catch (SQLException ex) {
            logger(ex);
        }
        return contacts;
    }
// It is used at some places and I want this method to throw an exception, 
// I want to handle it using null check