代码之家  ›  专栏  ›  技术社区  ›  im_mangesh

java异常后继续for循环

  •  5
  • im_mangesh  · 技术社区  · 8 年前

    这是我的代码:

    if (Recipients_To != null) {
        for (int i = 0; i < Recipients_To.length; i++) {
            message.setRecipients(Message.RecipientType.TO, Recipients_To[i].toString());
            Transport.send(message);
        }
    }
    

    我有500多个收件人列表要发送邮件 代码将向每个收件人发送个人邮件 . 但如果我在这两个for循环之间遇到异常 我想继续循环 对于其余收件人。我该怎么办?

    4 回复  |  直到 8 年前
        1
  •  7
  •   Maltanis    8 年前

    您要使用 try catch 阻止这样做,就像这样

    for (int i = 0; i < Recipients_To.length; i++) 
    {
        try {
           message.setRecipients(Message.RecipientType.TO,Recipients_To[i].toString());
           Transport.send(message);
        }
        catch (YourException e){
           //Do some thing to handle the exception
        }
    }
    

    这将捕获潜在的问题,并且在处理完异常后仍将继续for循环。

        2
  •  4
  •   Murat Karagöz    8 年前

    您可以捕获异常,例如。

    try {
        message.setRecipients(Message.RecipientType.TO, Recipients_To[i].toString());
        Transport.send(message);
    } catch (Exception e) {
        // handle it or leave it be
    }
    
        3
  •  3
  •   Jeroen Steenbeeke Karan    8 年前

    从技术上讲,这只是捕获异常的问题(参见Murat K的回答)。然而,我建议,既然您正在发送电子邮件,那么当第一个异常发生时,您应该停止发送其余的电子邮件,除非您确定这是一个可以安全忽略的错误。一些可能出错的示例:

    • 无效凭据:这意味着如果继续尝试发送,则后续的每次尝试也将失败。最佳情况:不发送电子邮件。最坏情况:SMTP服务器由于过度登录失败而阻止您的访问。
    • 收件人地址格式错误:继续尝试其他地址没有问题,但您需要处理此错误(从列表中删除收件人以备将来发送邮件)
    • 配置错误的邮件服务器地址:循环的每次迭代都会尝试连接到邮件服务器,但都会失败。这将极大地降低该方法的速度(服务器超时)或垃圾发送日志(假设您做了异常操作)

    因此,请在处理电子邮件时仔细考虑您的操作过程。

        4
  •  0
  •   Umair Mohammad    8 年前

    你可以试试这样的

    if (Recipients_To != null) {
        for (int i = 0; i < Recipients_To.length; i++) {
            try {
                message.setRecipients(Message.RecipientType.TO, Recipients_To[i].toString());
                Transport.send(message);
            } catch (Exception exp) {
                //Log your exception here or do whatever you want to happen in case of exception
            }
        }
    }