来自<<.NET框架程序设计>>

 

当我们抛出一个异常时, CLR会重新设置一个异常起始点。 CLR只记录最近一次异常抛出的位置。下面代码抛出一个异常,从而导致CLR重新设置该异常的起始点:

 void SomeMethod()

{

    try

  {....}

    catch(Exception e)

    {

     ...

     throw e;   //CLR认为这里是异常的起始点

     }

}

相反,如果我们抛出一个异常对象, CLR将不会重新设置其堆栈的起始点,下面代码抛出一个异常,但不会导致CLR重新设置异常的起始点:

 void SomeMethod()

{

    try

  {....}

    catch(Exception e)

    {

     ...

     throw;  //CLR不会重新设置异常的起始点

     }

}

 

以前一直看到throw 与throw e有什么不同的问法? 今天看到了确切的说法。 

posted on 2010-01-04 16:23  风浪  阅读(3017)  评论(3编辑  收藏  举报