Java 向现有方法添加异常

Java 向现有方法添加异常,java,Java,我有一个简单的数据库连接方法,我想添加一个条件,即如果连接失败,那么会向一组人发送一封电子邮件,告诉他们连接失败 我目前的方法是: public Connection createInitialConnection() throws ClassNotFoundException, SQLException, PollingException { DBConnectionDetails conDetails = new DBConnectionDetails("INITIAL");

我有一个简单的数据库连接方法,我想添加一个条件,即如果连接失败,那么会向一组人发送一封电子邮件,告诉他们连接失败

我目前的方法是:

public Connection createInitialConnection() throws ClassNotFoundException, SQLException, PollingException
{
    DBConnectionDetails conDetails = new DBConnectionDetails("INITIAL");

    Class.forName(conDetails.getDriver());      
    Connection connInitial = DriverManager.getConnection(conDetails.getUrl(),
                                      conDetails.getUser(), conDetails.getPassword());
    logger.info("Initial connection created" + conDetails.getUrl());

    return connInitial;
}
目前,没有检查连接是否成功,如果没有连接,则程序将继续运行


我不确定最好的方法是什么。if/else或try/catch?

您可以在
catch
块上发送电子邮件

try{
    Class.forName(conDetails.getDriver());      
    Connection connInitial = DriverManager.getConnection(conDetails.getUrl(),
                      conDetails.getUser(), conDetails.getPassword());

 }
 catch(SQLException | ClassNotFoundException ex){ // Java 7 needed for multicatch
   // Send the Email.
 }

也许您应该尝试捕获SQLExcepton,然后发送如下通知:

  try {
    Connection connInitial = DriverManager.getConnection(conDetails.getUrl(), conDetails.getUser(), conDetails.getPassword());
  } catch (SQLException e) {
    //send notification here
  }

挡块。它总是比其他任何东西都好

try{

 // your Logic to test the connection

}
catch(Exception ex)
{
 //Code to send the mail if the connection is failed.
}

你可以用try{}Catch。。在这种情况下,你有一个执行像没有网络或其他东西。之后,您需要检查
连接!=空
。。这就是您所需要的一切

日志库(如log4j)允许您添加一个日志附加器,为每个日志条目发送电子邮件(当然,您可以按严重性、类别等进行筛选)。因此,当您尝试获取连接并抛出异常时,异常处理程序会捕获并记录该异常,日志记录器会发送电子邮件

假设您的应用程序有某种异常处理程序记录未捕获的异常。发生这种情况的位置取决于应用程序的体系结构。它可以在servlet、jsp中的try-catch代码中,或者在像struts或SpringMVC这样的webapp框架中的专用处理程序中


如果您实现了此功能,您将能够在记录任何异常时收到通知,而不仅仅限于数据库连接问题。

在catch块中发送电子邮件可能适合您的应用程序,但是您将面临如何配置电子邮件的问题。谁应该得到它?是否可以有多个收件人?如何配置发件人、主题和格式并将其传递给您的邮件发件人?如果邮件发送失败怎么办?如果您走这条路,您可能会发现自己正在重新设计现有的解决方案


如果您使用的是Log4j,那么最好为您现有的记录器创建一个日志,或者为需要通过电子邮件发送的错误创建一个日志。如果愿意,您可以将Log4j配置为仅对SQL异常使用appender。

IllegalStateException或null,以及在何处使用createInitialConnection检查if!=我认为您应该捕获SQLException,然后尝试发送邮件。您在那里使用的是什么数据库技术?您应该尝试确定连接失败时引发的异常类型。然后是的,使用try/catch语句。这是离题的,但我想问一下。你确定这个系统会为每次失败的尝试发送电子邮件吗?如果这是一个网页等,那么如果连接失败(由于数据库关闭等),那么您的系统可能会开始每分钟发送这么多电子邮件,而基本上会变成一个不错的垃圾邮件发送者机器;)@T.G.能够控制电子邮件的流量会很好。另外,使用连接池可以减少连接重试的次数;这样,您所有的“末日”电子邮件都是从日志appender启动的,您可以禁用它或将其替换为另一种机制,以便进行测试或在另一个项目中重用代码。