2016-11-24 86 views
0

我有一个try-catch块的功能,当我在本地主机上运行解决方案时,它不会抛出任何异常。但有时会得到异常Massege“对象引用未设置为对象的实例”。当我在服务器上运行它。有可能获得异常触发器

我的代码中的捕获块看起来像这样;

catch (Exception e) 
{ 
     Mailing.SendMail(@gmail.com, e.Message 
    + Environment.NewLine + Request.UrlReferrer.OriginalString); 
} 

每当发现异常时,我想发送一封电子邮件。 所以,我的问题是,我可以从异常中获取触发器参数或行。

+1

您可以简单地发送'e.ToString()'而不是'e.Message'来包含堆栈跟踪。 –

+0

更好的是,启用“打破所有例外”。这实际上是其他NullReferenceException问题的重复 –

+0

事实上,发布'Exception.ToString()'结果是*要求*如果你想在SO中得到快速的答案。 –

回答

0

你说的是从异常中获取数据吗?

  1. e.StackTrace - 堆栈跟踪
  2. e.Message - 用户友好的信息
  3. e.Data - 附加数据(可能为null)

要得到行号,你可以使用:

StackTrace st = new StackTrace(ex, true); 
StackFrame frame = st.GetFrame(0); 
int line = frame.GetFileLineNumber(); 
+0

Exception.ToString()将返回所有这些。没有必要单独呼叫每个人 –

+0

是的,但是如果他想以某种方式使用它,这更加灵活。 – Fka

+0

这是更多的工作,并容易出错。如果你想记录一些东西,只需记录异常。如果你想询问StackOverflow中的异常,只需发布​​'Exception.ToString()' –