Code du jour: Try Catch ... Return ! (T)

Publié le 06 mai 2008 par Wtf

Don nous propose un bout de code sur l'envoi d'email, avec une façon plutôt spéciale de gérer les exceptions :

public Exception SendMail(
string Template,
Person Sender,
Person Receiver,
string Subject )
{
try
{
if ( Template.EndsWith(".tmp") == false )
Template += ".tmp";
string Body = _Templates[Template];
// %%SomeWord%%
Regex word = new Regex("\u0025\u0025[a-zA-Z]+\u0025\u0025");
foreach ( Match match in word.Matches(Body) )
{
switch ( match.Value.Replace("%%", "").toLower() )
{
case "username":
Body = Body.Replace("%%username%%", Receiver.UserName);
break;
case "password":
Body = Body.Replace("%%password%%", Receiver.Password);
break;
case "FirstName":
Body = Body.Replace("%%firstname%%", Receiver.GivenName);
break;
case "LastName":
Body = Body.Replace("%%lastname%%", Receiver.FamilyName);
break;
}
}
MailMessage mm = new MailMessage();
mm.From = Sender.WorkAddr;
mm.To = Receiver.HomeAddr;
mm.Subject = Subject;
mm.Body = Body;
SmtpMail.SmtpServer = "mx.domain.net";
SmtpMail.Send(mm);
}
catch ( Exception ex ) { return ex; }
return null;
}

Peut être n'ai-je pas compris la façon dont les exceptions sont sensées fonctionner, mais je n'ai jamais ressenti le besoin d'en retourner une, uniquement de les lever. Au passage, ça doit être assez rare de réussir à obtenir un nom et prénom correct dans le mail envoyé. Saurez vous trouver pourquoi?