尝试在流程顶部处理Catch

时间:2012-07-17 11:52:13

标签: c#

如果我这样做:

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

Exception是否提供了所有信息? 我们的想法是处理应用程序顶部的错误。在那里我会执行一些SQL sp来填充管理员表,这样他就知道异常。

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

感谢。

2 个答案:

答案 0 :(得分:1)

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

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

至于它发生的地方......你应该用try catch而不是大代码块来封闭容易出现异常的区域。通过这种方式,您将了解异常的来源。

答案 1 :(得分:1)

简短回答是肯定的:只是调用关于异常的抛出过程。

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

(引自Mark Gravell)