where should we add Exception handling here












-1












$begingroup$


I am reading a custom config section in my app.config and iterating through the URL's to get some response in JSOn and parse it to send the email with the details in there.
I got the basic walking skeleton of console App and I wanted to know how do I handle exceptions here, in the calling methods or the called methods. Also I would like advise on best practices on separating my code into multiple files if needed. Below is the code.



Program.cs



 static void Main(string args)
{
CustomConfigData customSection = ConfigurationManager.GetSection(CustomConfigData.SectionName) as CustomConfigData;
string ToAddressList = "", MsgBody = "", MsgSubject = "", CCAddressList = "";
string fromAddress= "Reminder@mycompany.com";
if (customSection != null)
{
foreach (URLEndpointElement urlendpoint in customSection.Urlendpoints)
{
//Console.WriteLine($" URL Type = {urlendpoint.Type}, URL Value = {urlendpoint.Address}");
// string response = GetResponse(urlendpoint.Address).ToString();
string samplejson = @"{'To': 'abcd@mycompany.com','Cc': 'hijk@mycompany.com,efgh@mycompany.com','Subject': 'Sample Email','Body': 'Sample Email from the program. Pls Ignore..'}";
ParseJSONResponse(samplejson , ref ToAddressList, ref MsgBody, ref MsgSubject, ref CCAddressList);
Console.WriteLine(response);
SendEmail(fromAddress, ToAddressList, CCAddressList, MsgSubject, MsgBody);
}
}
}

private static void ParseJSONResponse(string urlResponse, ref string toAddressList, ref string msgBody, ref string msgSubject, ref string cCAddressList)
{
JObject jsonresponse = JObject.Parse(urlResponse);
toAddressList = jsonresponse["To"].ToString();
cCAddressList= jsonresponse["Cc"].ToString();
msgSubject = jsonresponse["Subject"].ToString();
msgBody = jsonresponse["Body"].ToString();
}

//creating a non blocking GetMethod for URL
private static async Task<string> GetResponse(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
return await reader.ReadToEndAsync();
}
}

private static void SendEmail(string FromAddress, string ToAddress, string CCAddress, string Subject, string Body)
{
SmtpClient smtp = new SmtpClient() {
Host = "mail.mycompany.com",
Port = 25,
};
MailMessage mailmsg = new MailMessage(FromAddress, ToAddress, Subject, Body);
//Assuming To and CC addresses are separated by ,
mailmsg.To.Add(ToAddress);
mailmsg.CC.Add(CCAddress);
smtp.Send(mailmsg);
}


The Configuration data class is in a separate folder under Configuration in the Solution.
Please code review this with best practices on Exception handling.










share|improve this question









$endgroup$












  • $begingroup$
    I'm afraid your question cannot be answered here becuase it's OK to ask Does this code follow common best practices?, but not What is the best practice regarding X?. And since you are asking about how to implement error handling without actually having implemented it yet, your question is off-topic. Please also see What types of questions should I avoid asking?.
    $endgroup$
    – t3chb0t
    9 hours ago


















-1












$begingroup$


I am reading a custom config section in my app.config and iterating through the URL's to get some response in JSOn and parse it to send the email with the details in there.
I got the basic walking skeleton of console App and I wanted to know how do I handle exceptions here, in the calling methods or the called methods. Also I would like advise on best practices on separating my code into multiple files if needed. Below is the code.



Program.cs



 static void Main(string args)
{
CustomConfigData customSection = ConfigurationManager.GetSection(CustomConfigData.SectionName) as CustomConfigData;
string ToAddressList = "", MsgBody = "", MsgSubject = "", CCAddressList = "";
string fromAddress= "Reminder@mycompany.com";
if (customSection != null)
{
foreach (URLEndpointElement urlendpoint in customSection.Urlendpoints)
{
//Console.WriteLine($" URL Type = {urlendpoint.Type}, URL Value = {urlendpoint.Address}");
// string response = GetResponse(urlendpoint.Address).ToString();
string samplejson = @"{'To': 'abcd@mycompany.com','Cc': 'hijk@mycompany.com,efgh@mycompany.com','Subject': 'Sample Email','Body': 'Sample Email from the program. Pls Ignore..'}";
ParseJSONResponse(samplejson , ref ToAddressList, ref MsgBody, ref MsgSubject, ref CCAddressList);
Console.WriteLine(response);
SendEmail(fromAddress, ToAddressList, CCAddressList, MsgSubject, MsgBody);
}
}
}

private static void ParseJSONResponse(string urlResponse, ref string toAddressList, ref string msgBody, ref string msgSubject, ref string cCAddressList)
{
JObject jsonresponse = JObject.Parse(urlResponse);
toAddressList = jsonresponse["To"].ToString();
cCAddressList= jsonresponse["Cc"].ToString();
msgSubject = jsonresponse["Subject"].ToString();
msgBody = jsonresponse["Body"].ToString();
}

//creating a non blocking GetMethod for URL
private static async Task<string> GetResponse(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
return await reader.ReadToEndAsync();
}
}

private static void SendEmail(string FromAddress, string ToAddress, string CCAddress, string Subject, string Body)
{
SmtpClient smtp = new SmtpClient() {
Host = "mail.mycompany.com",
Port = 25,
};
MailMessage mailmsg = new MailMessage(FromAddress, ToAddress, Subject, Body);
//Assuming To and CC addresses are separated by ,
mailmsg.To.Add(ToAddress);
mailmsg.CC.Add(CCAddress);
smtp.Send(mailmsg);
}


The Configuration data class is in a separate folder under Configuration in the Solution.
Please code review this with best practices on Exception handling.










share|improve this question









$endgroup$












  • $begingroup$
    I'm afraid your question cannot be answered here becuase it's OK to ask Does this code follow common best practices?, but not What is the best practice regarding X?. And since you are asking about how to implement error handling without actually having implemented it yet, your question is off-topic. Please also see What types of questions should I avoid asking?.
    $endgroup$
    – t3chb0t
    9 hours ago
















-1












-1








-1





$begingroup$


I am reading a custom config section in my app.config and iterating through the URL's to get some response in JSOn and parse it to send the email with the details in there.
I got the basic walking skeleton of console App and I wanted to know how do I handle exceptions here, in the calling methods or the called methods. Also I would like advise on best practices on separating my code into multiple files if needed. Below is the code.



Program.cs



 static void Main(string args)
{
CustomConfigData customSection = ConfigurationManager.GetSection(CustomConfigData.SectionName) as CustomConfigData;
string ToAddressList = "", MsgBody = "", MsgSubject = "", CCAddressList = "";
string fromAddress= "Reminder@mycompany.com";
if (customSection != null)
{
foreach (URLEndpointElement urlendpoint in customSection.Urlendpoints)
{
//Console.WriteLine($" URL Type = {urlendpoint.Type}, URL Value = {urlendpoint.Address}");
// string response = GetResponse(urlendpoint.Address).ToString();
string samplejson = @"{'To': 'abcd@mycompany.com','Cc': 'hijk@mycompany.com,efgh@mycompany.com','Subject': 'Sample Email','Body': 'Sample Email from the program. Pls Ignore..'}";
ParseJSONResponse(samplejson , ref ToAddressList, ref MsgBody, ref MsgSubject, ref CCAddressList);
Console.WriteLine(response);
SendEmail(fromAddress, ToAddressList, CCAddressList, MsgSubject, MsgBody);
}
}
}

private static void ParseJSONResponse(string urlResponse, ref string toAddressList, ref string msgBody, ref string msgSubject, ref string cCAddressList)
{
JObject jsonresponse = JObject.Parse(urlResponse);
toAddressList = jsonresponse["To"].ToString();
cCAddressList= jsonresponse["Cc"].ToString();
msgSubject = jsonresponse["Subject"].ToString();
msgBody = jsonresponse["Body"].ToString();
}

//creating a non blocking GetMethod for URL
private static async Task<string> GetResponse(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
return await reader.ReadToEndAsync();
}
}

private static void SendEmail(string FromAddress, string ToAddress, string CCAddress, string Subject, string Body)
{
SmtpClient smtp = new SmtpClient() {
Host = "mail.mycompany.com",
Port = 25,
};
MailMessage mailmsg = new MailMessage(FromAddress, ToAddress, Subject, Body);
//Assuming To and CC addresses are separated by ,
mailmsg.To.Add(ToAddress);
mailmsg.CC.Add(CCAddress);
smtp.Send(mailmsg);
}


The Configuration data class is in a separate folder under Configuration in the Solution.
Please code review this with best practices on Exception handling.










share|improve this question









$endgroup$




I am reading a custom config section in my app.config and iterating through the URL's to get some response in JSOn and parse it to send the email with the details in there.
I got the basic walking skeleton of console App and I wanted to know how do I handle exceptions here, in the calling methods or the called methods. Also I would like advise on best practices on separating my code into multiple files if needed. Below is the code.



Program.cs



 static void Main(string args)
{
CustomConfigData customSection = ConfigurationManager.GetSection(CustomConfigData.SectionName) as CustomConfigData;
string ToAddressList = "", MsgBody = "", MsgSubject = "", CCAddressList = "";
string fromAddress= "Reminder@mycompany.com";
if (customSection != null)
{
foreach (URLEndpointElement urlendpoint in customSection.Urlendpoints)
{
//Console.WriteLine($" URL Type = {urlendpoint.Type}, URL Value = {urlendpoint.Address}");
// string response = GetResponse(urlendpoint.Address).ToString();
string samplejson = @"{'To': 'abcd@mycompany.com','Cc': 'hijk@mycompany.com,efgh@mycompany.com','Subject': 'Sample Email','Body': 'Sample Email from the program. Pls Ignore..'}";
ParseJSONResponse(samplejson , ref ToAddressList, ref MsgBody, ref MsgSubject, ref CCAddressList);
Console.WriteLine(response);
SendEmail(fromAddress, ToAddressList, CCAddressList, MsgSubject, MsgBody);
}
}
}

private static void ParseJSONResponse(string urlResponse, ref string toAddressList, ref string msgBody, ref string msgSubject, ref string cCAddressList)
{
JObject jsonresponse = JObject.Parse(urlResponse);
toAddressList = jsonresponse["To"].ToString();
cCAddressList= jsonresponse["Cc"].ToString();
msgSubject = jsonresponse["Subject"].ToString();
msgBody = jsonresponse["Body"].ToString();
}

//creating a non blocking GetMethod for URL
private static async Task<string> GetResponse(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
return await reader.ReadToEndAsync();
}
}

private static void SendEmail(string FromAddress, string ToAddress, string CCAddress, string Subject, string Body)
{
SmtpClient smtp = new SmtpClient() {
Host = "mail.mycompany.com",
Port = 25,
};
MailMessage mailmsg = new MailMessage(FromAddress, ToAddress, Subject, Body);
//Assuming To and CC addresses are separated by ,
mailmsg.To.Add(ToAddress);
mailmsg.CC.Add(CCAddress);
smtp.Send(mailmsg);
}


The Configuration data class is in a separate folder under Configuration in the Solution.
Please code review this with best practices on Exception handling.







c# error-handling






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 9 hours ago









ProgrammerzzzProgrammerzzz

1092




1092












  • $begingroup$
    I'm afraid your question cannot be answered here becuase it's OK to ask Does this code follow common best practices?, but not What is the best practice regarding X?. And since you are asking about how to implement error handling without actually having implemented it yet, your question is off-topic. Please also see What types of questions should I avoid asking?.
    $endgroup$
    – t3chb0t
    9 hours ago




















  • $begingroup$
    I'm afraid your question cannot be answered here becuase it's OK to ask Does this code follow common best practices?, but not What is the best practice regarding X?. And since you are asking about how to implement error handling without actually having implemented it yet, your question is off-topic. Please also see What types of questions should I avoid asking?.
    $endgroup$
    – t3chb0t
    9 hours ago


















$begingroup$
I'm afraid your question cannot be answered here becuase it's OK to ask Does this code follow common best practices?, but not What is the best practice regarding X?. And since you are asking about how to implement error handling without actually having implemented it yet, your question is off-topic. Please also see What types of questions should I avoid asking?.
$endgroup$
– t3chb0t
9 hours ago






$begingroup$
I'm afraid your question cannot be answered here becuase it's OK to ask Does this code follow common best practices?, but not What is the best practice regarding X?. And since you are asking about how to implement error handling without actually having implemented it yet, your question is off-topic. Please also see What types of questions should I avoid asking?.
$endgroup$
– t3chb0t
9 hours ago












0






active

oldest

votes











Your Answer





StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");

StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "196"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216182%2fwhere-should-we-add-exception-handling-here%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Code Review Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216182%2fwhere-should-we-add-exception-handling-here%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

How to reconfigure Docker Trusted Registry 2.x.x to use CEPH FS mount instead of NFS and other traditional...

is 'sed' thread safe

How to make a Squid Proxy server?