我想问下try...catch语句中throw是怎么用的,举例加注释说明下!

解决方案 »

  1.   


    try
    {
     //...这里抛出异常
    }
    catch(Exception e)
    {
       //这里捕捉到异常
       throw;//重新抛出。
    }
      

  2.   

     当你捕捉到异常后,不想在此处理时 可以用throw关键字 将你的异常剖出 Threw加上异常类型。然后在这个块外部或者函数外面进行处理。catch   (InvalidCastException   e)     
      {   
            throw   (e);       //   Rethrowing   exception   e   
      }   
      

  3.   

    HOHO,还好没有弄错,上面只是用throw;进行重新抛出,你当然还可以在“任何”地方,包括try的括号内,也可以在catch,也可以在finally内,使用
    throw SomeException;
    的方式来抛出异常。
    注意,在throw的后面的对象必须是继承自System.Exception.
    你可以new ,也可以throw已有的。
    比如,上面的,你可以写成:
    try
    {
     //...这里抛出异常
        throw;  //错误,必须指定抛出的异常。
        throw new object();  //错误,必须抛出继承自Exception的对象
        throw new Exception();  //OK
        Exception ex = new Exception();
       throw ex;   //OK
    }
    catch(Exception e)
    {
       //这里捕捉到异常:三种都正确
       throw e;     throw;                   //重新抛出,相当于throw e;
       throw new Exception();   //重新抛出一个新异常。
       }
      

  4.   

    上面的代码,我再明确说明一点,免得你光看了代码还不明白。
    在catch块中可以用throw;这样的方式,省略后面的“继承自Exception的对象”,而在其它地方使用throw则必须在后面带上个这个东西。
      

  5.   

    補充下3樓的,throw new Exception();应该尽量少用,除非你想引发一个新的异常。因为这种方式会将栈追踪重置为重新引发异常的位置。还会隐藏原始异常