异常后继续 for 循环 java
Continue for loop after exception java
这是我的代码:
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 循环 之间遇到异常,我想继续对剩余的收件人进行循环 。我该怎么办?
你可以捕获异常,例如
try {
message.setRecipients(Message.RecipientType.TO, Recipients_To[i].toString());
Transport.send(message);
} catch (Exception e) {
// handle it or leave it be
}
你可以试试这样的
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
}
}
}
您想使用 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 循环。
从技术上讲,这只是捕获异常的问题(请参阅 Murat K 的回答)。但是,我建议,既然您正在发送电子邮件,那么在第一个异常发生时就停止发送其余部分,除非您确定这是一个可以安全忽略的错误。一些可能出错的例子:
- 无效凭据:这意味着如果您继续尝试发送,每次后续尝试也将失败。最好的情况:没有发送电子邮件。最坏情况:由于登录失败次数过多,SMTP 服务器阻止您访问。
- 格式错误的收件人地址:继续尝试其他地址没有问题,但您需要针对此错误采取措施(从列表中删除收件人以便以后发送邮件)
- 邮件服务器地址配置错误:循环的每次迭代都会尝试连接到邮件服务器,但都失败了。这将极大地减慢该方法(服务器超时)或向您的日志发送垃圾邮件(假设您做了一些例外情况)
因此,请在处理电子邮件时仔细考虑您的行动方案。
这是我的代码:
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 循环 之间遇到异常,我想继续对剩余的收件人进行循环 。我该怎么办?
你可以捕获异常,例如
try {
message.setRecipients(Message.RecipientType.TO, Recipients_To[i].toString());
Transport.send(message);
} catch (Exception e) {
// handle it or leave it be
}
你可以试试这样的
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
}
}
}
您想使用 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 循环。
从技术上讲,这只是捕获异常的问题(请参阅 Murat K 的回答)。但是,我建议,既然您正在发送电子邮件,那么在第一个异常发生时就停止发送其余部分,除非您确定这是一个可以安全忽略的错误。一些可能出错的例子:
- 无效凭据:这意味着如果您继续尝试发送,每次后续尝试也将失败。最好的情况:没有发送电子邮件。最坏情况:由于登录失败次数过多,SMTP 服务器阻止您访问。
- 格式错误的收件人地址:继续尝试其他地址没有问题,但您需要针对此错误采取措施(从列表中删除收件人以便以后发送邮件)
- 邮件服务器地址配置错误:循环的每次迭代都会尝试连接到邮件服务器,但都失败了。这将极大地减慢该方法(服务器超时)或向您的日志发送垃圾邮件(假设您做了一些例外情况)
因此,请在处理电子邮件时仔细考虑您的行动方案。