2013-05-13 5 views
0

Что лучший способ, чтобы написать следующий код:Попробуйте поймать внутри Foreach Loop

foreach (DataRow row in table.Rows) 
{ 
    try 
    { 
     SendEmail(emailadress); //method that will send emails 
     MessageSent(true); 
    } 

    catch (Exception) 
    { 
     MessageSent(false); 
     break; 
    } 
} 

void MessageSent(Boolean IsSuccesful) 
{ 
    if (IsSuccesful) 
    { 
     Response.BufferOutput = true; 
     Response.Redirect("~/Page.aspx"); 
    } 
    else 
    { 
     lblSent.Text = "Email has failed."; 
    } 
} 

Я пытаюсь итерацию через DataTable и отправить по электронной почте различных сообщений электронной почты, перечисленных в DataTable, а затем перенаправить Page.aspx после успешной отправки всех электронных писем в datatable. Однако, если письма не работают, я хотел бы показать ярлык lblSent. Я просто не знаю, лучший ли это для этого.

+0

Вы что-то пробовали? Что случилось? –

+0

Это прекрасно работает, но мне интересно, есть ли более эффективный способ написать это. Я все еще новичок в .net –

+0

Почему вы не ставите в очередь целевые электронные письма, а затем отправляете их один раз? Я чувствую, что это намного эффективнее, чем отправка электронной почты по каждому отдельному адресу. –

ответ

0

Помимо прочего, вы не должны ловить тип Exception. Исключайте только исключения, которые вы знаете, как обращаться. Вы не можете обрабатывать NullReferenceException или ArgumentNullException, поэтому не пытайтесь. Поймать только те исключения, которые могут быть выброшены при отправке электронной почты. Такие вещи, как SmtpException или FormatException (для ошибок формата адреса электронной почты).

Смежные вопросы