Я отправляю электронное письмо с помощью smtp. Я использовал свойство InnerException в catch для обработки исключения. Моя проблема заключается в том, что я всегда получаю сообщение об ошибке «Ссылка на объект, не установленную на экземпляр объекта», каждый раз, когда он ловит исключение?Обработка ошибок с исключением C#
catch
{
HttpException ErrorType = Server.GetLastError() as HttpException;
Exception Error = ErrorType;
//Error line Object reference not set to an instance of an object.
if (ErrorType.InnerException != null)
Error = ErrorType.InnerException;
string ErrorName = Error.GetType().ToString();
string ErrorMessage = Error.Message;
string ErrorTrace = Error.StackTrace;
const string ToAddress = "mail";
const string FromAddress = "mail";
const string Subject = "An error has just occurred!";
// Mail Object
MailMessage Mail = new MailMessage("mail", "mail");
Mail.Subject = "Error has ocurred!";
Mail.IsBodyHtml = true;
Mail.Priority = MailPriority.High;
Mail.Body = string.Format(@"
<html>
<body>
<h1>An Error/Exception has just occurred </h1>
<table cellpadding=""5"" cellspacing=""0"" border=""1"">
<tr>
<tdtext-align: right;font-weight: bold"">URL:</td>
<td>{0}</td>
</tr>
<tr>
<tdtext-align: right;font-weight: bold"">User:</td>
<td>{1}</td>
</tr>
<tr>
<tdtext-align: right;font-weight: bold"">Exception Type:</td>
<td>{2}</td>
</tr>
<tr>
<tdtext-align: right;font-weight: bold"">Message:</td>
<td>{3}</td>
</tr>
<tr>
<tdtext-align: right;font-weight: bold"">Stack Trace:</td>
<td>{4}</td>
</tr>
</table>
</body>
</html>",
Request.RawUrl,
User.Identity.Name,
ErrorName,
ErrorMessage,
ErrorTrace.Replace(Environment.NewLine, "<br />"));
// Death Screen
string Markup = ErrorType.GetHtmlErrorMessage();
if (!string.IsNullOrEmpty(Markup))
{
Attachment attach =
Attachment.CreateAttachmentFromString(Markup, "attach.htm");
Mail.Attachments.Add(attach);
}
// Send the exception mail
SmtpClient smtp = new SmtpClient();
smtp.Send(Mail);
//lblMsg.Text = "Error!";
}
}
Нет гарантии, что исключение будет иметь внутреннее исключение. Часто они этого не делают. – Crowcoder
Из того, что я вижу, 'ErrorType' имеет значение null, что означает, что' Server.GetLastError() 'возвращает null или он возвратил объект, который нельзя отнести к' HttpException'. – Dirk