0

如果我这样做:

try 
{
    //code
}
catch (Exception)
{
    throw;
}

异常是否包含所有信息?这个想法是在应用程序的顶部处理错误。在那里我会执行一些 SQL sp 来填充管理员的表,以便他知道异常。

我想存储Exception.Message异常的源(方法、函数等)。但我不知道如何引用异常发生的“哪里”。是Exception.Source吗?Exception.TargetSite?

谢谢。

4

2 回答 2

1

异常的类型会告诉你它是什么类型的异常(IndexOutOfRangeException、SqlException 等),你也会做出相应的反应:

try 
{
    //code
}
catch (SqlException ex)
{
    // Handle code
}
catch (IndexOutOfRangeException ex)
{
    // Handle code
}
catch (Exception ex)
{
    // Handle code
}

至于它发生在哪里......你应该用一个try catch而不是大的代码块来封闭容易发生异常的区域。这样,您将知道异常的来源。

于 2012-07-17T11:57:12.603 回答
1

简短的回答是肯定的:只需调用 throw 就可以传递有关异常的所有信息。

  • throw ex 重置堆栈跟踪(因此您的错误似乎源自 HandleException)
  • throw 不会 - 原始违规者将被保留。

(引自 Mark Gravell)

于 2012-07-17T11:58:49.190 回答